当前位置:   article > 正文

C# 浮点数运算的精度损失问题_c# double 转化为float精度如何不丢失

c# double 转化为float精度如何不丢失

近期一客户反馈,软件里面数字计算的时候结果显示不对劲,和期望结果差了那么一点点。例如:

两数相减,3000.2 - 3000, 正常的期望结果是显示0.2,按理说不应该有什么问题的,而程序实际显示0.19, 似乎差了0.01。

  1. double a = 3000.2, b = 3000;
  2. double c = a - b;
  3. Console.WriteLine(c);
  4. //显示:0.199999999999818

多次尝试后,发现C#浮点数运算,确实存在精度损失的问题。探索一番,要使结果正确显示,方法如下:

  1. double a = 3000.2, b = 3000;
  2. double c = a - b;
  3. string str = c.ToString("N4"); //先转成字符串(保留4位小数,实际看具体精度要求而定)
  4. Double.TryParse(str, out c);
  5. Console.WriteLine(c);
  6. //显示0.2,正确

参考:https://m.jb51.net/article/36097.htm

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/108510
推荐阅读
相关标签
  

闽ICP备14008679号