C#Math.Round()定期双打

时间:2016-10-12 14:32:56

标签: c# math rounding

我一直在寻找一段时间,但找不到合适的答案。 可能是一个非常小的数学问题,但我不知道。

我们来看下面的代码:

// simple double for simplicity
Double t = 1.33333333333;
// Rounding
Math.Round(t, 2, MidpointRounding.AwayFromZero);
Math.Round(t, 2, MidpointRounding.ToEven);

两者都导致1.33。因为,他们为什么不应该。这就是这些舍入工作的方式。当然,1.66666完美地回合到1.67。

但在这种情况下,它不符合我的需要。 我需要将double舍入到两位小数,但最后一位数字总是向上舍入到下一个数字。 例如:

// The following code can not be executed...
Math.CustomRounding(t, 2, WhateverFitsMyNeeds.ToNextEven);

那种情况下的输出应该是 1.34 。舍入1.11111应该导致1.12。 1.222222应该舍入到1.23等等...... 有没有办法用C#来完成它,或者我必须在最后检查3并用4交换它?与字符串格式一样?

0 个答案:

没有答案