十进制到字符串格式

时间:2013-07-12 09:36:00

标签: c# math decimal string-formatting

我尝试在C#中使用(Decimal)0.9975格式将string转换为(0.##),但它将数字舍入为1而不是0.99

这是代码;

decimalValue.ToString("0.##");

如何将输出写为0.99?

3 个答案:

答案 0 :(得分:3)

我很久以前就得到了这个。我也被类似的东西打动了。我欠这篇文章给他。

decimal d = 0.9975m;

decimal newDecimal = Math.Truncate((d*100))/100;

string result = string.Format("{0:N2}", newDecimal.ToString()); // OR

string result = newDecimal.ToString(); //This is simpler I guess.

希望它有所帮助。

答案 1 :(得分:0)

另一种选择是接受舍入但从小数中减去0.005

decimal d = 0.9975m;
string result = (d-0.005m).ToString("0.##");

(0.9975 - 0.005) = 0.9925;
0.9925 => 0.99

答案 2 :(得分:0)

使用格式

decimalValue.ToString("#0.0#");

如果占位符上有值,则会更新“#”,如果“#”占位符上没有值,则会忽略该值,但不会忽略“0.0”。

var value = string.Format("{0:0.00}", decimalValue);

decimal decimalValue = 0.9975;
value.ToString("G3");

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx