第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較C#中的雙值

比較C#中的雙值

繁星淼淼 2019-07-09 15:06:59
比較C#中的雙值我有一個double變量調(diào)用x..在密碼里,x獲取分配的值為0.1我在一個比較“如果”的語句中檢查它x和0.1if (x==0.1){----}不幸的是,它沒有進(jìn)入if陳述我應(yīng)該用Double或double?這背后的原因是什么?你能提出解決辦法嗎?
查看完整描述

3 回答

?
喵喵時光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個贊

這是一個標(biāo)準(zhǔn)的問題,因?yàn)橛嬎銠C(jī)如何存儲浮點(diǎn)值。在這里搜索“浮點(diǎn)問題”,你會發(fā)現(xiàn)大量的信息。

簡而言之-浮動/雙不能存儲0.1準(zhǔn)確地說??偸怯悬c(diǎn)不對勁。

您可以嘗試使用decimal在十進(jìn)制表示法中存儲數(shù)字的類型。因此0.1將是準(zhǔn)確的代表。


你想知道原因:

浮動/雙存儲為二進(jìn)制分?jǐn)?shù),而不是十進(jìn)制分?jǐn)?shù)。為了說明:

12.34在十進(jìn)制表示法中(我們使用的)是指

1 * 101 + 2 * 100 + 3 * 10-1 + 4 * 10-2

計算機(jī)以相同的方式存儲浮點(diǎn)數(shù),除非它使用基。210.01手段

1 * 21 + 0 * 20 + 0 * 2-1 + 1 * 2-2

現(xiàn)在,您可能知道有一些數(shù)字不能完全用我們的十進(jìn)制表示法來表示。例如,1/3在十進(jìn)制表示法中0.3333333…..同樣的事情發(fā)生在二進(jìn)制表示法中,除了不能精確表示的數(shù)字是不同的。其中包括數(shù)字1/10..在二進(jìn)制表示法中0.000110011001100….

由于二進(jìn)制表示法不能精確地存儲它,所以它是以舍入的方式存儲的.這就是你的問題。


查看完整回答
反對 回復(fù) 2019-07-09
?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個贊

doubleDouble是一樣的(double的別名Double),可以互換使用。

將一個雙值與另一個值進(jìn)行比較的問題是,雙值是近似值,而不是精確值。所以當(dāng)你x0.1它在現(xiàn)實(shí)中可能被儲存為0.100000001或者類似的東西。

與其檢查是否相等,不如檢查差異是否小于定義的最小差(公差)。類似于:

if (Math.Abs(x - 0.1) < 0.0000001){
    ...}


查看完整回答
反對 回復(fù) 2019-07-09
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個贊

你需要一個組合Math.Abs在……上面X-Y和一個value與之相比。

可以使用以下擴(kuò)展方法

public static class DoubleExtensions
    {
        const double _3 = 0.001;
        const double _4 = 0.0001;
        const double _5 = 0.00001;
        const double _6 = 0.000001;
        const double _7 = 0.0000001;

        public static bool Equals3DigitPrecision(this double left, double right)
        {
            return Math.Abs(left - right) < _3;
        }

        public static bool Equals4DigitPrecision(this double left, double right)
        {
            return Math.Abs(left - right) < _4;
        }

        ...

因?yàn)楹苌僭贒ouble上調(diào)用方法,所以除了ToString我認(rèn)為這是相當(dāng)安全的延伸。

然后你可以比較xy喜歡

if(x.Equals4DigitPrecision(y))


查看完整回答
反對 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 473 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號