淺談c# 浮點數(shù)計算
更新時間:2017年09月24日 15:39:46 作者:大穩(wěn)·楊
本文通過具體的示例給大家演示了下C#中浮點數(shù)運算所遇到的問題及解決方法,有需要的小伙伴可以參考下
給大家看個計算題,看看大家的算術能力。
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);
}
運行結果:

這樣就是正常的運算結果了。
啦啦啦?。。?!
相關文章
DevExpress實現(xiàn)GridView當無數(shù)據(jù)行時提示消息
這篇文章主要介紹了DevExpress實現(xiàn)GridView當無數(shù)據(jù)行時提示消息,需要的朋友可以參考下2014-08-08
C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
Unity通用泛型單例設計模式(普通型和繼承自MonoBehaviour)
這篇文章主要介紹了Unity通用泛型單例設計模式,分為普通型和繼承MonoBehaviour,幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07

