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

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

為什么Math.圓形(2.5)返回2而不是3?

為什么Math.圓形(2.5)返回2而不是3?

尚方寶劍之說 2019-06-25 16:53:18
為什么Math.圓形(2.5)返回2而不是3?在C#中,Math.Round(2.5)是2。應(yīng)該是3,不是嗎?為什么它是2而不是C#?
查看完整描述

3 回答

?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

首先,這并不是一個(gè)C#bug-它將是一個(gè).NET bug。C#是語言-它不能決定Math.Round已實(shí)現(xiàn)。

第二,如果你讀到醫(yī)生,您將看到默認(rèn)的四舍五入是“四舍五入”(銀行家的四舍五入):

返回值
類型:System.Double
如果a的分?jǐn)?shù)分量介于兩個(gè)整數(shù)之間,其中一個(gè)是偶數(shù),另一個(gè)是奇數(shù),則返回偶數(shù)。注意,此方法返回Double而不是整型。

評語
這種方法的行為遵循IEEE標(biāo)準(zhǔn)754,第4節(jié)。這種四舍五入有時(shí)被稱為四舍五入到最近,或銀行家的四舍五入。它最大限度地減少了由在單個(gè)方向上一致舍入中點(diǎn)值而產(chǎn)生的舍入誤差。

您可以指定Math.Round應(yīng)該圍繞中點(diǎn)使用過載這需要一個(gè)MidpointRounding價(jià)值。有一個(gè)超載MidpointRounding對應(yīng)于沒有重載的每個(gè)重載:

這種默認(rèn)選擇是否正確是另一回事。(MidpointRounding僅在.NET 2.0中引入。在此之前,我不確定是否有任何簡單的方式來實(shí)現(xiàn)想要的行為而不自己去做。)特別是,歷史表明這不是預(yù)期行為-在大多數(shù)情況下,這是API設(shè)計(jì)中的一大罪過。我看得出來為什么銀行家的四舍五入很有用.。但對很多人來說還是個(gè)驚喜。

您可能有興趣查看最近的Java等效枚舉(RoundingMode提供了更多的選擇。(它不只是處理中點(diǎn)問題。)


查看完整回答
反對 回復(fù) 2019-06-25
?
UYOU

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

這被稱為舍入到偶數(shù)(或銀行家的四舍五入),這是一種有效的舍入策略,以盡量減少應(yīng)計(jì)金額錯(cuò)誤。(MidpointRounding.ToEven)..理論上說,如果你總是在同一個(gè)方向上舍入一個(gè)0.5個(gè)數(shù)字,那么誤差就會(huì)增加得更快(圓圈到甚至應(yīng)該把它降到最小)。(A).

請按照以下鏈接獲得以下MSDN描述:

  • Math.Floor

    向負(fù)無窮遠(yuǎn)的方向發(fā)展。
  • Math.Ceiling

    正無窮大。
  • Math.Truncate

    向上或向下都是零。
  • Math.Round

    ,其舍入到最接近的整數(shù)或指定的小數(shù)位數(shù)。如果行為在兩種可能性之間完全相等,例如舍入,則可以指定行為,以便最后的數(shù)字是偶數(shù)(“

    Round(2.5,MidpointRounding.ToEven)

    “變得更遠(yuǎn),離零更遠(yuǎn)”

    Round(2.5,MidpointRounding.AwayFromZero)

    “成為3)。

下圖和表格可能會(huì)有所幫助:

-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====Floor                    -3      -1      0      1      2Ceiling                  -2       0      1      2      3Truncate                 -2       0      0      1      2Round(ToEven)            -3       0      0      2      3Round(AwayFromZero)      -3      -1      0      2      3

請注意Round比它看起來強(qiáng)大得多,僅僅是因?yàn)樗梢运纳嵛迦氲揭粋€(gè)特定的小數(shù)位數(shù)。所有其他四舍五入的小數(shù)都是小數(shù)。例如:

n = 3.145;a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.14b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15

對于其他函數(shù),您必須使用乘法/除法來達(dá)到同樣的效果:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14d = System.Math.Ceiling (n * 100) / 100;                     // 3.15

(A)當(dāng)然,這一理論依賴于這樣一個(gè)事實(shí):您的數(shù)據(jù)在偶數(shù)一半(0.5、2.5、4.5、.)之間有相當(dāng)均勻的分布。和奇數(shù)一半(1.5,3.5,.)

如果“一半值”是均數(shù)(例如),錯(cuò)誤的累積速度就像你總是四舍五入一樣快。


查看完整回答
反對 回復(fù) 2019-06-25
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

從…Msdn,Math.圓形(Double A)返回:

如果a的分?jǐn)?shù)分量介于兩個(gè)整數(shù)之間,其中一個(gè)是偶數(shù),另一個(gè)是奇數(shù),則返回偶數(shù)。

..所以2.5,介于2和3之間,被舍入到偶數(shù)(2)。這叫做銀行四舍五入(或四舍五入),是一種常用的四舍五入標(biāo)準(zhǔn)。

同一條MSDN文章:

這種方法的行為遵循IEEE標(biāo)準(zhǔn)754,第4節(jié)。這種四舍五入有時(shí)被稱為四舍五入到最近,或銀行家的四舍五入。它最大限度地減少了由在單個(gè)方向上一致舍入中點(diǎn)值而產(chǎn)生的舍入誤差。

您可以通過調(diào)用Math.哪個(gè)回合的重載來指定不同的舍入行為。MidpointRounding模式。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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