对不正确的输出进行四舍五入

时间:2020-10-01 03:18:36

标签: c#

我正在尝试四舍五入一个数字,并且预期的输出不正确。这是我尝试过的:

 var percent = Math.Round(1.13451, 0);

上面的返回值是1,但是如果第三个数字小于5,我希望它返回1.13。如果它大于等于5(第三个数字),我想得到类似{{ 1}}。我确定这很简单,但我不确定。

3 个答案:

答案 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语句内