使用C#的两个小数位


71
decimal Debitvalue = 1156.547m;

decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:0.00}", Debitvalue));

我只需要保留两位小数,但是使用此代码,我得到1156.547。让我知道显示小数点后两位必须使用的格式。


Math.Round将起作用,甚至您的代码也将起作用。我用您的代码进行了测试,它可以正常工作的十进制Debitvalue = Convert.ToDecimal(“ 1156.547”); 十进制DEBITAMT = Convert.ToDecimal(string.Format(“ {0:0.00}”,Debitvalue)); Console.WriteLine(DEBITAMT);
阿南德

Answers:


37

如果要四舍五入,请查看 Math.Round()


5
当我们已经在代码中使用了convert.todecimal时,为什么不使用这个Convert.ToDecimal(string.Format(“ {0:F2}”,Debitvalue));;

5
@Dragon-因为将数字转换为字符串然后再转换为数字是代码异味。
cjk

4
oo。kk..then我将使用类似Math.round(Convert.todecimal(val),2)的方法。–
Dragon

68

您的问题是要求显示两位小数。使用以下String.format将有所帮助:

String.Format("{0:.##}", Debitvalue)

这将显示然后最多带两位小数的数字(例如2.10将显示为2.1)。

如果要始终显示两位小数,请使用“ {0:.00}”(例如2.10将显示为2.10)

或者,如果要显示货币符号,请使用以下命令:

String.Format("{0:C}", Debitvalue)

11
实际上,如果他希望显示2.10,则第一个格式将为“ {0:.00}”。如果使用##,则为2.1。
SvendK's

这是不是真的工作。它将4.998舍入为5,但OP希望有2个小数点作为4.99
Emil

您也可以这样写String.Format("{0:C}", Debitvalue)$"{Debitvalue:C}"
Ram Pratap


34

如果要始终显示两位小数(即使您的数字只有一位小数),最好的方法是使用

yournumber.ToString("0.00");


16

这是另一种方法

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00"));

11

仅用于显示,其属性String可以如下使用。

double value = 123.456789;
String.Format("{0:0.00}", value);

使用System.Math.Round。该值可以分配给其他值,也可以根据需要进行操作。

double value = 123.456789;
System.Math.Round(value, 2);

4

可能是其他示例的变体,但是我使用此方法还可以确保在小数点前显示点而不是逗号:

someValue.ToString("0.00", CultureInfo.InvariantCulture)

4

另一种方式 :

decimal.Round(decimalvalue, 2, MidpointRounding.AwayFromZero);



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.