两个小数位使用c#

decimal Debitvalue = 1156.547m;

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

我只得到两位小数,但通过使用这个代码我得到了1156.547。 让我知道我必须使用哪种格式来显示两位小数。

36
额外 编辑
意见: 1
Math.Round可以工作,甚至你的代码也可以工作。我测试了你的代码,它工作得很好十进制Debitvalue = Convert.ToDecimal(“1156.547”);十进制DEBITAMT = Convert.ToDecimal(string.Format(“{0:0.00}”,Debitvalue)); Console.WriteLine(DEBITAMT);
额外 作者 Anand,
是的,你的正确,谢谢!
额外 作者 Kiran Reddy,

10 答案

你的问题是要求显示两位小数。使用下面的String.format将有助于:

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

这将显示只有两位小数的数字。

或者,如果您想显示货币符号,请使用以下内容:

String.Format("{0:C}", Debitvalue)
44
额外
这个不是真的有用。它将4.998舍入到5,但是OP想要2个小数为4.99
额外 作者 batmaci,
实际上,如果他想要2.10来显示,第一个格式的格式应该是“{0:.00}”。用##的它会是2.1。
额外 作者 SvendK,

使用 Math.Round() 四舍五入至小数点后两位

decimal DEBITAMT = Math.Round(1156.547m, 2);
40
额外

If you want to round the decimal, look at Math.Round()

27
额外
@Dragon - 因为将一个数字转换为一个字符串并返回到一个数字是一种代码嗅觉。
额外 作者 cjk,
为什么不用这个Convert.ToDecimal(string.Format(“{0:F2}”,Debitvalue));,当我们已经在代码中使用convert.todecimal时。
额外 作者 Dragon,
哦,kk ..然后我会像这样使用Math.round(Convert.todecimal(val),2)..
额外 作者 Dragon,

我使用

decimal Debitvalue = 1156.547m;
decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:F2}", Debitvalue));
16
额外

这是另一种方法

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

如果您想始终显示两位小数(即使您的号码只有一位小数位),最好的办法就是使用

yournumber.ToString("0.00");
9
额外

仅用于显示, String 的属性可用于以下内容。

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

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

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

其他方式 :

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

3
额外

Another option is to use the Decimal.Round Method

2
额外

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

someValue.ToString(“0.00”,CultureInfo.InvariantCulture)

2
额外