问题描述
|
我正在执行计算,得出一个浮点数。当我尝试将其写入访问字段时,出现此错误:
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
。