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

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

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

