1不等于1?
在命令窗口输入下面的代码:
Dim
d As Double执行之后,你会惊讶地发现,d和1并不相等。
这是怎么回事,0.7 + 0.2 + 0.1明明就是1,而且第三条语句也证明了d的结果就是1啊。
这是因为d是Double类型,是浮点数,浮点数的1,可能并不会精确地等于1,而只是近似等于1。
毋需过分担心这种误差,这种误差只有10的负16次方左右,对日常计算的结果不会有任何影响,但是会影响数值比较的结果
如果需要精确比较两个数值,该如何处理呢,可以将上述代码改为:
Dim
d As Double上面的代码,用Round函数将d的小数位数四舍五入到6位,然后再和1比较。
或者用Decimal类型代替Double类型:
Dim
d As DecimalDecimal是高精度小数,不会有Double的那种误差。