首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-03-23 
用double做乘法答案不正确刚才发现的这个问题,谁能帮忙指点一下原因?doublex178900867.300\\double17890

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

热点排行