我想根据第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在这里帮助我。
答案 0 :(得分:8)
正如乔恩所说,用小数代替。然后你可以这样做,总是向上舍入2个小数点。
Math.Ceiling(value2 * 100) / 100
答案 1 :(得分:4)
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
答案 2 :(得分:3)
最后,我想出了一个解决方案。我改进了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;
}
答案 3 :(得分:0)
这个怎么样:
Math.Round(Value+0.005,2)