【发布时间】:2018-02-09 05:57:25
【问题描述】:
正如标题所述,我需要将十进制数字四舍五入到以 9 结尾的下一个小数点后 2 位数字。例如:
1.07 -> 1.09
1.11 -> 1.19
1.99 -> 1.99
我已经阅读了 c# 的 Math.round 文档,但我找不到任何可以完成此操作的内容。
我目前的实现是这样的:
x = decimal.Parse(Math.Round(x),2);
x = decimal.Parse(x.ToString().Remove(x.Length -1,1) + "9")
但这似乎草率且效率很重要,因为我将处理成千上万个项目。一定有更好的办法。
谢谢
【问题讨论】:
-
四舍五入到最接近的十分之一,减去 -0.01...
-
@MikeMcCaughan - 那行不通。如果您从
5开始,那么该方法将返回4.99(这将是向下移动)。 -
很确定我以前在 SO 上看到过这个确切的问题,现在搜索所有重复项......
-
@Enigmativity 我不确定你在说什么。您似乎将其读作“将其四舍五入到最接近的整数”,而实际上它说的是“将其向上四舍五入到最接近的十分之一”。
-
@MikeMcCaughan 如果输入为 5,则四舍五入到最接近的十分之一是 5 和 5 - 0.01 是 4.99。此外,四舍五入到最接近的十分之一的 5.1 仍然是 5.1,而 5.1-0.01 是 5.09,结果应该是 5.19
标签: c#