例如,我可以使用System.Math.Round((float),2)
将浮点数舍入到最接近的小数点后 2 位,但无论如何在 F# 中我可以将浮点数舍入到小数点后 2 位?谢谢
问问题
3453 次
2 回答
4
四舍五入的黑客解决方案
let round x d =
let rounded = Math.Round(x,d)
if rounded < x then x + Math.Pow(10,-d) else rounded
于 2013-04-07T06:39:51.373 回答
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,并且计算借方还是贷方开始变得重要. 如果你对称地做它,例如总是远离零,那么你就不再关心了。
于 2013-04-10T14:34:28.903 回答