9

我想根据第 3 位小数点进行四舍五入。它应该始终采用 UP 值和四舍五入。我使用了 Math.Round,但它没有像我预期的那样产生结果。

方案 1

var value1 = 2.526;
var result1 = Math.Round(value1, 2); //Expected: 2.53 //Actual: 2.53

方案 2

var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52

场景1没问题。它正在产生我预期的结果。在第二种情况下,我的金额为 2.522。我想考虑第三个小数点(在这种情况下是“4”),它应该向上取整。预期结果是 2.53

无论第 3 位小数是多少(小于 5 或​​大于 5),都应该向上取整。

谁能给我一个解决方案?我不认为 Math.Round 在这里帮助了我。

4

4 回答 4

11

正如乔恩所说,请改用小数。然后你可以这样做总是用 2 个小数点四舍五入。

Math.Ceiling(value2 * 100) / 100
于 2014-02-06T09:48:14.697 回答
5
var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52
if(result2 < value2)
    result += 0.01; // actual 2.53
于 2014-02-06T10:16:09.203 回答
4

最后我想出了一个解决方案。我改进了 Sinatr 的回答如下,

var value = 2.524;
var result = RoundUpValue(value, 2); // Answer is 2.53

public double RoundUpValue(double value, int decimalpoint)
{
    var result = Math.Round(value, decimalpoint);
    if (result < value)
    {
        result += Math.Pow(10, -decimalpoint);
    }
    return result;
}
于 2014-02-07T17:23:53.330 回答
1

那这个呢:

Math.Round(Value+0.005,2)
于 2014-02-06T09:47:50.760 回答