舍入十进制数字到上限值

时间:2011-09-15 11:11:56

标签: c# decimal rounding

如果数字不为零,我想将十进制数字舍入为上限值。 我想将第6位数舍入到上限值。

Sample Value    = 1.0003331
Expected Value  = 1.000334

2 个答案:

答案 0 :(得分:1)

听起来像你想要的那样:

decimal scale = 1000000m;
decimal rounded = decimal.Ceiling(x * scale) / scale;

(比例可能会减一:)

显然如果你试图用它处理非常大的数字会导致问题 - 它们可能会溢出。

我想你也可以通过添加一定金额然后使用decimal.Round来做同样的事情,但是如果没有MidpointRounding的{​​{}},那会有点尴尬{1}}。

答案 1 :(得分:0)

您可以尝试这样的事情:

decimal.Round(Value + 0.00000049m, 6, MidpointRounding.AwayFromZero)

MidpointRounding.AwayFromZero确保当一个数字位于另外两个数字之间时,它会向最接近零的数字四舍五入。

MSDN Decimal.Round