首頁  >  文章  >  後端開發  >  c#之浮點數計算問題的解決

c#之浮點數計算問題的解決

黄舟
黄舟原創
2017-09-20 11:05:182067瀏覽

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

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);
}

運行結果:

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

以上是c#之浮點數計算問題的解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn