在C#中将小数点后两位加倍?


Answers:


479

这有效:

inputValue = Math.Round(inputValue, 2);

截断float的解决方法:float myTruncFloat = float.Parse(Math.Round(myFloat,2).ToString());
Piero Alberto

1
如果值为48.0000。不会得到48.00。double inputValue = 48.00; inputValue = Math.Round(inputValue,2); 将仅产生48。有战争吗?
user1926138

100
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

4
这实际上是应该使用的。银行等中的大多数操作都是使用此方法(MidpointRounding.AwayFromZero)完成的。
MadBoy'3

41
建议银行使用双精度货币实在令人生畏,不要对货币使用近似值。
raggi

6
@raggi恐怕有些银行会这样做...这将解释很多东西
SparK

4
是的,我相信这就是电影《办公室空间》之后的作品-四舍五入的分数很少有人会注意到。注意何时随意使用舍入的好点。
atconway 2014年

1
早在很久以前,作为原始超人电影之一的情节的一部分。
詹姆斯·韦斯特盖特

25

你应该用

inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

圆数学

Math.Round将双精度浮点值舍入为指定数量的小数位数。

中点舍入

指定数学舍入方法应如何处理介于两个数字中间的数字。

基本上,上面的函数将采用您的输入值并将其舍入到2(或您指定的任何数字)小数位。随着MidpointRounding.AwayFromZero当一个数字是中间两个人之间,它向四舍五入,从零距离最接近的数字。您还可以使用另一个选项将其舍入到最接近的偶数。


25

另一种简单的方法是将ToString与参数一起使用。例:

float d = 54.9700F;    
string s = d.ToString("N2");
Console.WriteLine(s);

结果:

54.97

19

使用Math.Round

value = Math.Round(48.485, 2);

殴打我(尽管我也要在上面加上分号;))
Reed Copsey 2010年

1
但是,请注意MidpointRounding:“如果小数位数右边的值中的第一个数字的值为5,则如果该数字为奇数,则将其四舍五入;如果该数字为偶数,则将其保持不变”。
马赛厄斯

8

您可以从下面尝试一种方法。

1. 
 value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
 inputvalue=Math.Round(123.4567, 2)  //"123.46"
3. 
 String.Format("{0:0.00}", 123.4567);      // "123.46"
4. 
string.Format("{0:F2}", 123.456789);     //123.46
string.Format("{0:F3}", 123.456789);     //123.457
string.Format("{0:F4}", 123.456789);     //123.4568

我使用了第四个选项。写F6对我来说比写6个零更好;-)
Maurice Klimek

2

使用插值字符串,这会生成一个四舍五入的字符串:

var strlen = 6;
$"{48.485:F2}"

输出量

"48.49"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.