将小数值四舍五入到最接近的0.01?

5

可能重复:
c# - 如何将十进制值舍入到2位小数(用于页面输出)

如何将十进制值舍入到最接近0.05的值?,链接的SO帖子也讨论了类似的主题,但这不是我期望的输出。

我需要转换像这样的十进制值

16.489-->16.49
16.482-->16.48
16.425-->16.43
7.67 --> 7.67 (no conversion)

我可以使用以下C#方法来转换这些值。
  Math.Round(16.482*20)/20;

但这种方法对我没有用,它给出了以下结果。
16.489-->16.5 
16.482-->16.5 
7.67 --> 7.7
16.425-->16.45 

在C#中,有什么优雅的方法来做到这一点。

2个回答

15

如果您想四舍五入到最接近的四分之一怎么办?使得1.489四舍五入为1.5,但1.479四舍五入为1.475? - Anthony
Math.Round(1.479,2,MidpointRounding.AwayFromZero) 四舍五入为 1.48 - Fredou
但是在那个例子中,我不想将其四舍五入为1.48,我想将其四舍五入为1.475。我希望最后两位数字四舍五入为0、25、5或75,具体取决于哪个更接近。 - Anthony
@安东尼,我有点困了,但是这应该可以解决问题吧?(十进制)(整数)(十进制)(1.479100)/100+(Math.Round((decimal)1.479,2,MidpointRounding.AwayFromZero) - (decimal)1.479 )/210 - Fredou
Fredou,嘿,非常感谢你的时间。我真的在试图为用户最初尝试使用并展示如何适应的反向方法辩护。但是你想到了这点真的让我很惊讶。好好休息吧,伙计。 - Anthony

3
你尝试过吗?
 Math.Round(16.482*200)/200;

1
有没有更简洁的方法来完成这个? - Ben S
@Anthony,我也试过了。在16.425或16.124上无法工作。 - RameshVel
@Anthony,是的,在其他场景下它可以工作。 - RameshVel
我明白了,您想要四舍五入到最接近的.01,而不是.05或.005。所以您应该执行Math.Round(16.482*100)/100;。如果有问题,请告诉我。 - Anthony
@Anthony,是的,现在指定了100就可以了。谢谢。 - RameshVel
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接