【发布时间】:2011-10-13 12:47:21
【问题描述】:
我想将一个值(double)四舍五入到下一个(总是向上取整)数字。可以用任意数字定义舍入。
经验:
向上舍入到下一个 2.50
0.00 --> 0.00
0.01 --> 2.50
2.49 --> 2.50
2.50 --> 2.50
2.50000001 --> 5.00
...
执行此操作的算法很简单(如果“数字”为负数 * -1):
Math.Round((Math.Abs(number) + tolerance) / 2.50, MidpointRounding.AwayFromZero) * 2.50
公差定义如下:
tolerance = 2.50 / 2 - Math.Pos(10, -x);
但我不知道如何确定 x!因为在第 1-4 个例子的情况下 x 应该是 0.01 在第 5 个例子的情况下它应该是 0.0000001 等等......
搜索结果只建议解析十进制数的字符串并计算十进制数。没有数学方法吗?否则,我必须对十进制分隔符和没有十进制数字的数字(没有要删除的十进制分隔符)使用不同的语言环境设置。
愿任何人都可以解决我的问题。谢谢!
亲切的问候,丹尼
【问题讨论】: