Как вы определяете точность / масштаб десятичных знаков при расчете выражения в Access / VBA? - PullRequest
0 голосов
/ 21 июня 2019

Я преобразую несколько проектов данных 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

1 Ответ

1 голос
/ 21 июня 2019

Если вы выполняете вычисления в VBA, то вы используете тип VB Decimal, который поддерживает только 28-29 цифр точности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...