我想在 c# 中将 double 值四舍五入到小数点后两位,我该怎么做?
double inputValue = 48.485;
围捕后
inputValue = 48.49;
相关:c# - 如何将十进制值四舍五入到小数点后 2 位(用于在页面上输出)
这有效:
inputValue = Math.Round(inputValue, 2);
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)
另一种简单的方法是将 ToString 与参数一起使用。例子:
float d = 54.9700F;
string s = d.ToString("N2");
Console.WriteLine(s);
结果:
54.97
你应该使用
inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)
Math.Round 将双精度浮点值舍入为指定的小数位数。
指定数学舍入方法应如何处理介于两个数字之间的数字。
基本上,上面的函数将获取您的 inputvalue 并将其四舍五入到 2(或您指定的任何数字)小数位。使用 MidpointRounding.AwayFromZero
,当一个数字位于其他两个数字之间时,它会向 离零最近的数字四舍五入。您还可以使用另一个选项,向 最近的偶数四舍五入号码。
value = Math.Round(48.485, 2);
你可以从下面尝试一个。有很多方法可以做到这一点。
1.
value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
inputvalue=Math.Round(123.4567, 2) //"123.46"
3.
String.Format("{0:0.00}", 123.4567); // "123.46"
4.
string.Format("{0:F2}", 123.456789); //123.46
string.Format("{0:F3}", 123.456789); //123.457
string.Format("{0:F4}", 123.456789); //123.4568
使用插值字符串,这会生成一个向上取整的字符串:
var strlen = 6;
$"{48.485:F2}"
输出
"48.49"
我认为所有这些答案都缺少这个问题。问题在于“向上取整”,而不仅仅是“取整”。我的理解是,四舍五入意味着关于整数的任何小数值都会四舍五入到下一个整数。即:48.0000000 = 48 但 25.00001 = 26。这不是四舍五入的定义吗? (或者我过去 60 年的会计工作是否放错了地方?