发现一个很有意思的问题
Int(65.1*100)的值等于多少?答案是6509,为什么呢? 数据精度的问题。不足为奇 确实挺奇怪,期待高人解释一下 1、计算机浮点数计算存在误差这应该是常识。
2、int取整时存在四舍五入的问题:
Debug.Print Int(65.1 * 100 + 0.5)
3、可以使用定点数计算:
Debug.Print Int(65.1@ * 100)
Debug.Print Int(ccur(65.1) * 100)
我也觉得很奇怪
见怪不怪 类型的关系把 看监看 用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
补充:VB , VBA