为什么此代码返回1 sudo apachectl restart
而不是2
region = forms.ChoiceField(default='us')
如果我将其替换为decimal
它仍会返回1 p = Math.Round(9431.796, 2);
答案 0 :(得分:4)
如果将9431.796
四舍五入到小数点后两位,您将获得9431.80
。
数字数据类型不存储实际数字。它们存储数字的表示。 9431.80
与9431.8
完全相同,当它们存储在decimal
或double
变量中时,它们之间不会有任何区别。
因此,如果您显示9431.80
而没有做任何事情以某种方式格式化它,它将显示为9431.8
。所以问题在于你理解数字如何以数值数据类型存储。
使用.ToString()
创建一个包含一定小数位数的字符串。在这种情况下,您不需要使用Math.Round()
。 .ToString()
会绕过它:
var p = 9431.796.ToString("0.00");
Console.WriteLine(p); // 9431.80
答案 1 :(得分:3)
你不能因为9431.80
等于9431.8。在这种情况下,我猜你想用特定的格式打印出来,可以这样做:
string p = Math.Round(9431.796, 2).ToString("0.00");
答案 2 :(得分:-1)
Math.Round(9431.796, 2)
返回一位小数,因为它将四舍五入为9431.80。显示时,它会消除最后的0,这就是为什么你只看到一个小数
Math.Round(9431.796, 4)
肯定会返回9431.796。你能再试一次吗?
答案 3 :(得分:-1)
由于它转到9431.80
,它会删除无用的最后一个0
。我会用:
int nbDec = 2;
p = Math.Round(9431.796, nbDec );
Console.Out.WriteLine(p.ToString("#,##0." + new string('#',nbDec ));
将显示9,431.80
。
如果您想要更多或更少的小数,只需更改nbDec
值即可。