c# 浮點數計算問題


給大家看個計算題,看看大家的算術能力。

0.1 +0.1 +0.1 - 0.3 等於幾?

大家可能會說這么簡單的問題,是不是看不起我?肯定等於0啊。

如果大家直接算的是沒有問題的,但是如果用計算機呢?

見證奇跡的時刻到了,看代碼:

void Main()
{
    var f = 0.1 +0.1 +0.1 -0.3;
    Console.WriteLine("f=={0}",f);
}

運行結果:

這是因為計算機的精度的問題,在計算機的內部存儲和運算的精度缺失等問題,我解釋的可能不太明白,不過,大家可以用下面的方案進行解決:

void Main()
{
    //var f = 0.1 +0.1 +0.1 -0.3;
    //Console.WriteLine("f=={0}",f);
    
    var f1 = new Decimal(0.1) + new Decimal(0.1) + new Decimal(0.1) - new Decimal(0.3);
    Console.WriteLine("f1 == {0}",f1);
}

運行結果:

這樣就是正常的運算結果了。

啦啦啦!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM