C#中浮点数的比较


前几天去面试,被问到怎么比较两个浮点数的大小,当时只说了个大概,看得出来面试官不是太满意,回来特意查了一下,在MSDN上发现了比较浮点数是否相等的不错的方法:

// Initialize two doubles with apparently identical values
double double1 = .33333;
double double2 = (double) 1/3;
// Define the tolerance for variation in their values
double difference = double1 * .0001;

// Compare the values
// The output to the console indicates that the two values are equal
if (Math.Abs(double1 - double2) <= difference)
   Console.WriteLine("double1 and double2 are equal.");
else
   Console.WriteLine("double1 and double2 are unequal.");

 

上段代码中定义了一个比较精度,两个浮点数的差在此精度误差之中,就可以认为相等。

至于两个浮点数的大小比较,我认为直接用double1 > double2这种格式就可以了,看到网上有人将double1和double2的差和double.Epsilon比较,个人认为这只是取了最精确的精度值,跟上面的方法本质是一样的,不知道理解的是否正确,欢迎大家拍砖。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM