我尝试在C#中使用(Decimal)0.9975
格式将string
转换为(0.##)
,但它将数字舍入为1而不是0.99
这是代码;
decimalValue.ToString("0.##");
如何将输出写为0.99?
答案 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");