0

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

这是代码;

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

如何将输出写为 0.99?

4

3 回答 3

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.

希望能帮助到你。

于 2013-07-12T09:50:13.233 回答
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

于 2013-07-12T10:21:45.433 回答
0

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

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

(0.9975 - 0.005) = 0.9925;
0.9925 => 0.99
于 2013-07-12T10:03:59.020 回答