当前位置:编程学习 > C#/ASP.NET >>

C#中float, double的精度问题

在工作中我发现了一个C#浮点数的精度问题,以下的程序运行结果并未得到我预期的结果:

view source
print?
01 namespace FloatTest
02 {
03     class Program
04     {
05         static void Main(string[] args)
06         {
07             double a = 0.0001;
08             float b = 0.1F;
09   
10             int c = (int)((a * 1000) / b);
11   
12             Console.WriteLine("c = {0}", c);
13   
14             Console.ReadLine();
15         }
16     }
17 }

我期望的结果是得到1,结果程序返回的结果为c = 0

 

这让我想到了可能是因为浮点数采用IEEE754的表示方法,在运算中b会转换成double,可能是在转换中算法的问题导致精度丢失,为了证实该问题,我做了下面的实验:

view source
补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,