在Access 2002 VBA中,可以使用哪种数据类型来限制双精度结果的精度?

问题描述

| 我正在执行计算,得出一个浮点数。当我尝试将其写入访问字段时,出现此错误
Run-time error \'3759\': Scaling of decimal value resulted in data truncation
我故意将访问字段限制为固定的精度。我希望该值会被自动截断,但会引发此错误-如何在VBA中显式更改该值的精度以避免此错误? 码:
value = X / Y
With myTAble
    .AddNew
    !calc = value
    .Update
End With
    

解决方法

        您可以尝试使用VBA的Round函数,如下所示:
!calc = Round(value,2)
用任意多个小数位替换2。 根据数字的大小和精度,如果Round返回的值不能精确地表示为Double浮点数(因此最终的位数比您要求的要多),您可能仍然会遇到3759错误。一种更可靠的方法可能是使用类似以下内容的方法:
!calc = CDec(FormatNumber(value,2))
用任意多个小数位替换2。 FormatNumber将舍入数字并将其转换为字符串(仅包含您指定的小数位数),而CDec会将字符串转换为Decimal。     ,        这个怎么样:
value = X / Y
With myTAble
    .AddNew
    !calc = Fix(value*10^decimalPlaces)/10^decimalPlaces
    .Update
End With
其中“ 5”是您希望使用的小数位数。
Fix
截断数字。如果您想四舍五入,请尝试
Clng
。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...