tft每日頭條

 > 生活

 > 如何将數字金額四舍五入

如何将數字金額四舍五入

生活 更新时间:2024-12-05 04:59:41
概述

在開發軟件系統的時候,我們經常會跟金錢打交道,C#中使用decimal類型來表示金錢,decimal的基數是10(float和double都是2),因此它更适合用來存儲金錢類型的數值。對于金錢,我們也經常會進行四舍五入操作(有的系統使用分整型可能不需要四舍五入的操作),那麼在C#中如何對decimal類型進行四舍五入呢?

Math.Round的使用

我們可以使用Math.Round函數來對decimal類型的數值進行“四舍五入”處理。來看下面的代碼:

decimal levyMoney1 = 77.24m; decimal levyMoney2 = 24.56m; //設置保留一位小數并輸出 ("money1對應的輸出:" Math.Round(levyMoney1, 1)).Dump(); ("money2對應的輸出:" Math.Round(levyMoney2, 1)).Dump();

輸出結果如下:

如何将數字金額四舍五入(中如何對金額數值進行四舍五入)1

結果跟我們期望的一緻!但是事實真的是這樣嗎?讓我們下面再看個示例。

decimal levyMoney3 = 50.35m; decimal levyMoney4 = 50.45m; //C#的Round函數都是采用Banker’s rounding(銀行家算法),即:四舍六入五取偶 ("money3對應的輸出:" Math.Round(levyMoney3, 1)).Dump(); ("money4對應的輸出:" Math.Round(levyMoney4, 1)).Dump();

輸出結果如下:

如何将數字金額四舍五入(中如何對金額數值進行四舍五入)2

納尼?輸出的竟然都是50.4?和我們理解的“四舍五入”不一緻啊!這是因為C#的Round函數都是采用Banker’s rounding(銀行家算法),即:四舍六入五取偶。所以結果才都是50.4。

正确表達四舍五入

那麼,如何才能正确地表達四舍五入呢?Round的方法有個重載,其中第三個參數(MidpointRounding)用來表示舍入的規範。因此,四舍五入可以通過設置該參數為MidpointRounding.AwayFromZero來達到目的,如下:

decimal levyMoney3 = 50.35m; decimal levyMoney4 = 50.45m; ("money3四舍五入對應的輸出:" Math.Round(levyMoney3, 1, MidpointRounding.AwayFromZero)).Dump(); ("money4四舍五入對應的輸出:" Math.Round(levyMoney4, 1, MidpointRounding.AwayFromZero)).Dump();

輸出結果如下:

如何将數字金額四舍五入(中如何對金額數值進行四舍五入)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved