例如我可以使用System.Math.Round((float),2)
将我的浮点数舍入到最接近的2位小数位,但无论如何在F#中我可以 向上舍入 我的浮到2位小数?
感谢
答案 0 :(得分:3)
哈希解决方案的四舍五入
let round x d =
let rounded = Math.Round(x,d)
if rounded < x then x + Math.Pow(10,-d) else rounded
答案 1 :(得分:1)
向上舍入(严格向上,而不是远离零):
let roundUp x d =
Math.Round(x + Math.pow(10,-d)/2,d)
考虑舍入0.001到2dp。你想要这个舍入到0.01:
0.001 + 0.01/2 = 0.006
-> 2dp: 0.01
这是从截断中获得正常舍入的常用方法得出的;添加一半所需的精度和截断。然而,这会受到负数的影响,因此需要根据原始值的符号减去或添加增量。
请注意,如果您总是向上舍入,那么负数将向零舍入。在通常需要2dp的财务状况下,这是一个坏主意,因为0.021的余额四舍五入为0.03,但余额-0.021四舍五入为-0.02,无论您是在计算借方还是贷方,它都会变得很重要。如果你对称地做,例如总是远离零,那你再也不在乎了。