这个是我的计算代码
Dim temp As Single
temp = Single.Parse(txtNum.Text) * 10 Mod 1当temp = 1.2的时候,应该temp的值为0.0
但是跟踪发现,结果总是为:0.000000476837158导致我后面程序的判断temp是否为0的时候总是失败。如果将上面的代码拆开成:temp = Single.Parse(txtNum.Text) * 10
temp = temp Mod 1结果就没有问题。这个是什么原因造成的?请高手指教。谢谢。^_^
Dim temp As Single
temp = Single.Parse(txtNum.Text) * 10 Mod 1当temp = 1.2的时候,应该temp的值为0.0
但是跟踪发现,结果总是为:0.000000476837158导致我后面程序的判断temp是否为0的时候总是失败。如果将上面的代码拆开成:temp = Single.Parse(txtNum.Text) * 10
temp = temp Mod 1结果就没有问题。这个是什么原因造成的?请高手指教。谢谢。^_^
Double精度(有效数字)为15-16位
0.000000476837158明显是Double型
我猜测可能是
浮点数的mod运算,是浮点除法,而浮点除法为保证计算精度,默认是采用Double型的
(.NET里我不太清楚,VB6里面非整数除法是用Double型的,即使是两个整数相除)但结果应该是Single,最后会进行舍入,再转为Single而已