【发布时间】:2014-02-06 09:44:59
【问题描述】:
我想根据小数点后第三位进行四舍五入。它应该始终采用 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 在这里帮助了我。
【问题讨论】:
-
如果您对小数点感兴趣,也许您应该使用
decimal类型而不是double?你想代表什么样的价值? -
“但它没有像我预期的那样产生结果。” - 老实说,“总是向上取整”并不是很多人期望的结果。
-
另外值得指出的是 Math.Round 经常被误解:stackoverflow.com/questions/977796/…