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