转到下一个更高的数字

时间:2011-10-13 12:47:22

标签: c# math rounding

我想将值(double)舍入到下一个(allways round up)数字。舍入可以由任何数字定义。

精通.:
四舍五入到下一个2.50

0.00       --> 0.00
0.01       --> 2.50
2.49       --> 2.50
2.50       --> 2.50
2.50000001 --> 5.00
...

执行此操作的算法很简单(如果'number'为负* -1):

Math.Round((Math.Abs(number) + tolerance) / 2.50, MidpointRounding.AwayFromZero) * 2.50

容忍度定义如下:

tolerance = 2.50 / 2 - Math.Pos(10, -x);

但我不知道如何确定x!因为在第1个例子的情况下,在第5个例子的情况下,x应该是0.01,因此它应该是0.0000001,等等......

搜索结果仅建议解析十进制数字的字符串并计算十进制数字。有数学方法吗?否则我必须使用不同的区域设置来处理小数分隔符和没有小数位的数字(没有要删除的小数分隔符)。

任何人都可以解决我的问题。谢谢!

亲切的问候,丹尼

4 个答案:

答案 0 :(得分:15)

Math.Ceiling(v / 2.5) * 2.5怎么样?

答案 1 :(得分:0)

Math.Ceiling完全符合您的需要。

答案 2 :(得分:0)

您需要Math.Ceiling

这需要加倍并将向上舍入到最接近的整数,除非该值已经等于整数。但是,它返回的数据类型仍然是双精度型。

用法示例......

Double testValue = 1.52;
Console.WriteLine(Math.Ceiling(testValue));

...会打印2

答案 3 :(得分:0)

你可以使用Math.Ceiling