C# double類型變量比較分析
double類型變量
怎么比較大小
通過使用double.equals(doubale a,double b)進(jìn)行比較時,發(fā)現(xiàn)兩個數(shù)值不是相等。

圖中sum為從0加0.1累計到1,按數(shù)學(xué)計算應(yīng)該為1.0,但是在計算機(jī)中計算為0.9999999999,通過double.equals或者直接用==進(jìn)行等量判斷時,發(fā)現(xiàn)不相同。
這說明double類型不能直接進(jìn)行等量判斷,那么怎么進(jìn)行比較呢?
類型轉(zhuǎn)換為decimal
將float模型轉(zhuǎn)換成decimal可以直接進(jìn)行判斷了.

可以看出兩個值都是1,這樣就可以直接進(jìn)行比較了。
綜上所述,在進(jìn)行數(shù)值比較時,如果使用double類型時,不能直接進(jìn)行等量判斷,需要通過兩值相減小于某個定義的值如0.0000001來判斷兩值相等或者轉(zhuǎn)換為其他類型進(jìn)行判斷。
補充知識:c#中Double類型的使用場景
【Double】
double類型在程序中定義變量會經(jīng)常使用,如果使用不當(dāng),會導(dǎo)致實際值精度問題出現(xiàn),例子如下:
Double d1 = 66.09; Double d2 = 89.943; Double d3 = 156.033; d2 = d1 + d2; //兩個double 類型相加的結(jié)果是:156.03300000000002 Console.WriteLine(d2.CompareTo(d3)); //導(dǎo)致最終的結(jié)果是d2的值大于d3的值,但是實際看到的值是相等的 Console.ReadLine();
【解決方案】
使用Decimal類型定義后保證小數(shù)的精確度,兩個相同類型的decimal相加后可以確保程序不會自動添加進(jìn)度到結(jié)果值中,這樣就能夠避免出現(xiàn)以上情況發(fā)生
Decimal d1 = 66.09M; Decimal d2 = 89.943M; Decimal d3 = 156.033M; d2 = d1 + d2; Console.WriteLine(d2.CompareTo(d3)); Console.ReadLine();
以上這篇C# double類型變量比較分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#?Winform實現(xiàn)復(fù)制文件顯示進(jìn)度
這篇文章主要介紹了C#?Winform實現(xiàn)復(fù)制文件顯示進(jìn)度,用進(jìn)度條來顯示復(fù)制情況,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07
DevExpress之ChartControl實現(xiàn)餅狀圖百分比演示實例
這篇文章主要介紹了DevExpress之ChartControl實現(xiàn)餅狀圖百分比演示的方法,實例講述了窗體與圖形繪制函數(shù)的用法,需要的朋友可以參考下2014-10-10
windows下C#定時管理器框架Task.MainForm詳解
這篇文章主要為大家詳細(xì)介紹了windows下C#定時管理器框架Task.MainForm的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
c#動態(tài)編譯執(zhí)行對象方法示例 運用映射機(jī)制創(chuàng)建對象
本示例核心技術(shù)是運用.NET動態(tài)編譯技術(shù)+.NET映射技術(shù),把一個代碼塊中的代碼,動態(tài)編譯成程序集后,在運用映射機(jī)制,創(chuàng)建對象示例,調(diào)用對象方法2014-01-01

