这个是我的计算代码
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结果就没有问题。这个是什么原因造成的?请高手指教。谢谢。^_^

解决方案 »

  1.   

    如果Mod比*优先好像也不正确吧?10 Mod 1 = 0那么0乘以任何事情都是0了啊。怎么会是0.000000476837158呢?请各位明示。^_^
      

  2.   

    Single精度(有效数字)为7位
    Double精度(有效数字)为15-16位
    0.000000476837158明显是Double型
      

  3.   

    因为中间结果是以Double型来存储的,最后再转为Single
      

  4.   

    viena(维也纳nn木人 [IQ=50,EQ<0])  谢谢你的回答。能否就我提出的这个例子,再详细一些呢?我还不是很明白。^_^
      

  5.   

    我也不是很明白
    我猜测可能是
    浮点数的mod运算,是浮点除法,而浮点除法为保证计算精度,默认是采用Double型的
    (.NET里我不太清楚,VB6里面非整数除法是用Double型的,即使是两个整数相除)但结果应该是Single,最后会进行舍入,再转为Single而已
      

  6.   

    谢谢,viena(维也纳nn木人 [IQ=50,EQ<0]),今天想了一阵子。还是没有想清楚。:p