自定义十进制四舍五入[英] Custom decimal round

问题描述

大家好,
我需要使用特定规则对十进制值进行四舍五入.
例如:

十进制 a = 1.49m -1m
十进制 a = 1.5m -1m
十进制 a = 1.51m -2m

我试过 Math.Round 但值为 1.5 它返回我 2,它是
不符合我的业务规则.

我该如何解决这个问题?

提前致谢.
--
Luigi

推荐答案

7 月 1 日下午 3:23*,Luigi <ciupazNoSpamGra...@inwind.it 写道:
我需要使用特定规则对十进制值进行四舍五入.
例如:

十进制 a = 1.49m -1m
十进制 a = 1.5m -1m
十进制 a = 1.51m -2m

我试过 Math.Round 但值为 1.5 它返回我 2,它是
不符合我的业务规则.

我怎么解决这个问题?
我会写一个自定义的舍入方法.如果有
就很简单了一个非常具体的要求.在这种情况下,类似于:

public decimal Round(十进制值)
{
十进制地板 = Math.Floor(value);
十进制上限 = Math.Floor(value);
小数中点 = (地板+天花板)/2;
返回值 <= 中点 ?地板:天花板;
}

很可能会出现一些奇怪的问题
小数可以存储的最大数字,但如果您的应用程序
不使用那些(而且不太可能)那么你应该没问题.

虽然这是完全未经测试的 - 我强烈建议编写单元
测试一下!

乔恩

像这样厚脸皮的东西怎么样:

十进制 a = Math.Ceiling(x-0.5M);

显然你需要考虑 -ves 等...

Marc

7 月 1 日上午 10:23*,Luigi <ciupazNoSpamGra...@inwind.it 写道:
大家好,
我需要使用特定规则对十进制值进行四舍五入.
例如:

十进制 a = 1.49m -1m
十进制 a = 1.5m -1m
十进制 a = 1.51m -2m

我试过 Math.Round 但值为 1.5 它返回我 2,它是
不符合我的业务规则.

我该如何解决这个问题?

提前致谢.

--
路易吉
尝试乘以 10*(需要的小数位数),使用 math.floor 或
math.ceiling,然后除以相同的数字 10*(小数位数
需要)


本文地址:https://www.itbaoku.cn/post/1050725.html