用double做乘法答案不正确
刚才发现的这个问题,谁能帮忙指点一下原因?
double x = 178900867.300; \\ double 178900867.3
double y = Math.Pow(10, -6); \\ double 0.000001
double z;
z = x * y; \\ double 178.90086730000002
谁能告诉我后面这个0000002是怎么来的?
in vs 2005, .net 2.0
------解决方案--------------------浮点数据本身就是不精确的
------解决方案--------------------浮点型在内存中是以2进制的形式近似来表示的,超出精度的部分在内存中是什么就不得而知了
用decimal类型就不会出现问题了
------解决方案--------------------补充一点double类型的精度是17位有效数字
float类型的精度是7位有效数字
你可以数一下,你的z已经超出了17位了,那个2就是第18位。
------解决方案--------------------正常,舍入误差