我正在尝试四舍五入一个数字,并且预期的输出不正确。这是我尝试过的:
var percent = Math.Round(1.13451, 0);
上面的返回值是1
,但是如果第三个数字小于5,我希望它返回1.13
。如果它大于等于5(第三个数字),我想得到类似{{ 1}}。我确定这很简单,但我不确定。
答案 0 :(得分:4)
您似乎在引起混乱,因为您使用的是“舍入”一词来描述实际上不是舍入的运算。
我再次阅读了您的描述,可以看到您正在尝试将值截断为不超过该值的0.005的最高离散增量。
您可以执行以下操作:
var percent = Math.Floor(200.0 * x) / 200.0;
或者,如果您希望它更清楚地说明正在发生的事情,那么本质上是同一件事:
var increment = 0.005
var percent = Math.Floor(x / increment) * increment;
答案 1 :(得分:3)
您必须用所需的小数位数编写它。 var percent = Math.Round(1.13451, 2);
更新:我认为这是最简单的方法。
static void Main(string[] args)
{
var percent = 1.13551;
char[] percent1 = percent.ToString().ToCharArray();
if (percent1[4] <= 5)
{
percent = Math.Round(percent, 3);
}
else
{
percent = Math.Round(percent, 2);
}
Console.WriteLine(percent);
Console.Read();
}
答案 2 :(得分:1)
使用:
var percent = Math.Round(1.13451, 2);
在if
语句内