我有一个Web应用程序,它将百分比标记应用于产品,但百分比将由用户指定.例如,用户可以表明他们想要将产品标记为5%,9%,23%等.我的问题是,产品价格也会发生变化,这样做最终会给出丑陋的价值($ 1462.72)
因此,我的用户希望我们可以将值四舍五入到最接近的5\0值.因此,如果我的标记产品价格是1462.72美元,它将会达到1465美元.另一方面,1798.02美元甚至可以达到1800美元.
使用VB\C#,我该如何舍入这些值?
谢谢!
要舍入到任意模数,您可以创建如下函数:
public decimal Round(decimal source, decimal modulus)
{
return (Math.Round(source / modulus) * modulus);
}
Run Code Online (Sandbox Code Playgroud)
并以这种方式使用它:
decimal rounded = Round(1798.02m , 5.0m); // yields 1800.0
decimal rounded = Round(1462.72m , 5.0m); // yields 1465.0
decimal rounded = Round(2481.23m , 5.0m); // yields 2480.0
Run Code Online (Sandbox Code Playgroud)
请注意,Math.Round默认情况下将中点值舍入为最接近的偶数(例如1.5和2.5都会"舍入"为2.在您的情况下,效果是任何数字恰好在0到5之间吃(即2.5,7.5)将四舍五入到最接近的10:
decimal rounded = Round(1697.50m , 5.0m); // yields 1700.0
decimal rounded = Round(1702.50m , 5.0m); // yields 1700.0
Run Code Online (Sandbox Code Playgroud)
如果你想在中点上总是向上舍入,只需在Round:
return (Math.Round(source / modulus, MidpointRounding.AwayFromZero) * modulus);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |