转到下一个更高的数字

dan*_*yyy 6 c# math rounding

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

Exp:
接下来的2.50

0.00       --> 0.00
0.01       --> 2.50
2.49       --> 2.50
2.50       --> 2.50
2.50000001 --> 5.00
...
Run Code Online (Sandbox Code Playgroud)

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

Math.Round((Math.Abs(number) + tolerance) / 2.50, MidpointRounding.AwayFromZero) * 2.50
Run Code Online (Sandbox Code Playgroud)

容差定义如下:

tolerance = 2.50 / 2 - Math.Pos(10, -x);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何确定x!因为在第1~第4例的情况下,在第5例的情况下,x应为0.01,因此应为0.0000001,依此类推......

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

愿任何人都能解决我的问题.谢谢!

亲切的问候,丹尼

lep*_*pie 15

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


Wid*_*dor 6

你需要数学天花板

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

使用示例...

Double testValue = 1.52;
Console.WriteLine(Math.Ceiling(testValue));
Run Code Online (Sandbox Code Playgroud)

...会打印2