今天发现一个超级郁闷的问题,就是float的计算结果相当的不对,
如:3456789.71f+1234567.03f
得出的结果是:4691357.0,它自动把73进行舍入了还有就是:
367633.7f+83088.08f
得出结果是:450721.8我以前所知道的情况是:
0.1+0.1=0.1999999999 或者 0.20000000001
没想到,还会有干脆把小数扔掉的情况我也知道,这种情况,只要使用decimal,就可以解决,但是还是想知道有没有针对上面这种问题的其它解决方案???顺便警醒大家,对小数要求比较高的情况下,还是不要用float或double的好,它们都会出现上述情况

解决方案 »

  1.   

    汗一个,楼主一会的功夫就升星了……
    我觉得你这样做精度肯定会丢失的,因为float的精度是7位
      

  2.   

    float的精度比较低
    你用double试试看
      

  3.   

    float的精度是7位,自己测试了一下,
    也就是说float只保证前7位数字的精确度
    如:
    123456789f+123456789f=246913584.0double的精度是15~16位
    decimal是28到29位所以使用中要判断可能出现的数字的倍数,自己提醒自己一下。
      

  4.   

    要注意精度问题,尽量使用decimal