求助:vba clng(31)=31判断出错是什么情况
vba吧
全部回复
仅看楼主
level 1
9901家大人 楼主
求助:vba clng(31)=31判断出错是什么情况
2020年08月19日 06点08分 1
level 1
9901家大人 楼主
dim arr(1)
arr(0)=595.2
arr(1)=19.2
if clng(arr(0)/arr(1))<> arr(0)/arr(1)then
msgbox
endif
2020年08月19日 06点08分 2
level 1
9901家大人 楼主
明明就是31整数,判定却成功了
2020年08月19日 06点08分 3
level 5
前面是long,后面是double
2020年08月19日 08点08分 4
如何解决呢
2020年08月19日 09点08分
其他的倍数都可以,就只有595.2以及595.2的偶数倍有问题,这不一定是数据类型的问题吧
2020年08月19日 09点08分
level 5
那就是浮点预算的误差问题了。
2020年08月19日 10点08分 5
level 5
MsgBox 595.2 / 19.2 - CLng(595.2 / 19.2)
结果是3.51628448580499E-15,有极微小的误差。
MsgBox 3.14
15926535897
9 = 3.14
15926535897
95
结果是False。
浮点数显示精度是小数点后14位,如果手动输入的时候超过14位,系统会自动取前面14位,不显示14位以后的,但在计算的时候证明14位以后的数值还是有效的,但也仅限于当时,保存后重新打开运行就不存在了。
至于浮点数运算误差,你自己百度一下就知道为什么了。
2020年08月19日 10点08分 6
谢了,根据您的思路,解决了
2020年08月20日 02点08分
1