如何解决在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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。