如何在C#.Net中将十进制值向上舍入至最近的四分之一值?
如何在C# .NET中将十进制值向上舍入至下一个四分之一值
没问题,我来帮你搞定这个向上舍入到最近0.25倍数的需求!你之前用Math.Floor出错是因为它是向下取整,而你需要的是向上取整到下一个四分之一刻度,这时候Math.Ceiling才是正确的选择。
核心思路
实现逻辑很简单:
- 把目标数值除以0.25(相当于放大4倍),得到一个十进制数
- 对这个结果使用
Math.Ceiling向上取整,确保拿到不小于原数的最小整数 - 再把取整后的结果乘以0.25,还原回四分之一刻度的数值
实现代码
直接写一个简洁的方法就行,注意要用decimal类型的字面量0.25m避免浮点精度问题:
decimal RoundUpToNextQuarter(decimal amountToRound) { return Math.Ceiling(amountToRound / 0.25m) * 0.25m; }
验证你的示例
用你给出的测试值跑一遍,完全符合预期:
RoundUpToNextQuarter(5.125m)→ 5.25RoundUpToNextQuarter(6.390m)→ 6.50RoundUpToNextQuarter(7.610m)→ 7.75RoundUpToNextQuarter(8.950m)→ 9.00
为什么你的原方法不对?
你之前的方法用了Math.Floor(向下取整),再加上额外的fairness和final变量,反而把逻辑复杂化了。其实只需要用Math.Ceiling完成向上取整的核心需求,不需要多余的参数。
内容的提问来源于stack exchange,提问作者Sam Bin Ham
相关产品推荐
相关产品推荐

