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

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

為什么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。應該是3,不是嗎?為什么它是2而不是C#?
查看完整描述

3 回答

?
翻翻過去那場雪

TA貢獻2065條經(jīng)驗 獲得超14個贊

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

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

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

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

您可以指定Math.Round應該圍繞中點使用過載這需要一個MidpointRounding價值。有一個超載MidpointRounding對應于沒有重載的每個重載:

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

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


查看完整回答
反對 回復 2019-06-25
?
UYOU

TA貢獻1878條經(jīng)驗 獲得超4個贊

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

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

  • Math.Floor

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

    正無窮大。
  • Math.Truncate

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

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

    Round(2.5,MidpointRounding.ToEven)

    “變得更遠,離零更遠”

    Round(2.5,MidpointRounding.AwayFromZero)

    “成為3)。

下圖和表格可能會有所幫助:

-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比它看起來強大得多,僅僅是因為它可以四舍五入到一個特定的小數(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ù),您必須使用乘法/除法來達到同樣的效果:

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

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

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


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

TA貢獻1848條經(jīng)驗 獲得超10個贊

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

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

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

同一條MSDN文章:

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

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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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