关于double 运算后多出很多小数的问题

.Net技术 码拜 9年前 (2016-03-07) 3842次浏览
double v = 52428.8;
var v1 = v * 2;
var v2 = v * 3;
Console.WriteLine(v1);
Console.WriteLine(v2);
Console.ReadLine();

如上代码
本人调试时发现v2在得到计算结果的时候变成了 157286.40000000002 这个啥情况啊 怎么样解决呢?

解决方案

5

这个的确,原因是二进制有时候不能精确的表示十进制的浮点数,所以会出现很小的偏差,但是你输出的时候可能汇给你略掉,或你可以按照本人的意愿输出

5

浮点数是不精确的
你可以用decimal,这个的精度比double更高

5

这是浮点数的特点
可以根据需要对数据输出位数进行限制
例如 ToString(“F2”)  //保留2位小数
可以参考
http://blog.csdn.net/tpriwwq/article/details/13017947

5

引用 4 楼 xian_wwq 的回复:

这是浮点数的特点
可以根据需要对数据输出位数进行限制
例如 ToString(“F2”)  //保留2位小数
可以参考
http://blog.csdn.net/tpriwwq/article/details/13017947

如上面说的,浮点数的确会有很多000000000002之类的小数,但是输出的时候,157286.40000000002 并不会输出为157286.40000000002 ,而是157286.4。即,net本身有进行了精度舍入,以降低进制转换导致的非必要精度


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于double 运算后多出很多小数的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)