Я преобразую несколько проектов данных Access в веб-приложения JavaScript и использую библиотеку math.js для поддержки больших чисел и конечной точности.
В форме доступа есть поле, которое принимает выражение (формула) и заполняет другое поле (фактор) ответом.
Тип данных SQL на сервере: decimal(38, 30)
; точность 38, а шкала 30.
Старое приложение работало годами; однако, похоже, что ни один из вычислений не прошел после 28-го знака после запятой.
Итак, Access / VBA округляется до 28-го места вместо 30-го.
Где Access / VBA определяет десятичную шкалу в вычислениях?
Private Sub Formula_BeforeUpdate(Cancel As Integer)
If IsNull(Me.Formula) Or Me.Formula = "" Then
Me.Factor = ""
Else
Me.Result.ControlSource = "=" & Me.Formula
Me.Factor = Me.Result
End If
End Sub
// decimal(38, 30) [DB defined datatype, precision & scale]
// expression (Formula)
// ((0.505*193/190)*230/260)/1.1032
// Access/VBA calculation (Factor):
// 0.411334674542662787386271222800
// Theoretically expected answer (Factor):
// 0.411334674542662787386271222766