读书人

用double做乘法答案不正确解决方案

发布时间: 2012-03-23 12:06:21 作者: rapoo

用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位。
[解决办法]
正常,舍入误差

读书人网 >C#

热点推荐