例如我可以用System.Math.Round((float),2)
来圆我浮到最近的2位小数的具体数量,但反正是有在F#中,我可以一轮上涨我浮到小数点后2地方呢? 感谢F#四舍五入到小数
2
A
回答
3
的hackish解决围捕
let round x d =
let rounded = Math.Round(x,d)
if rounded < x then x + Math.Pow(10,-d) else rounded
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,无论您是计算借记还是贷记。如果你对称地做,例如总是远离零,然后你不再在意。
+0
它甚至比这更糟糕 - 使用默认的RoundToEven行为,一些已经存在的数字是不稳定的。例如,roundUp 1.05 2将产生1.06。你需要在你的回合使用MidPointRounding.AwayFromZero,并确保你总是舍入负数。 – Lamarth 2017-08-28 08:07:52
相关问题
- 1. 没有四舍五入到五位数
- 2. 四舍五入浮动与F-串
- 3. MS Access四舍五入SQL小数位
- 4. pyodbc SQLSERVER光标小数四舍五入
- 5. 四舍五入为最小整数值
- 6. 四舍五入长小数点
- 7. 四舍五入TSQL
- 8. Convert.ToSingle四舍五入
- 9. parseFloat四舍五入
- 10. Java四舍五入
- 11. 四舍五入至整数
- 12. 四舍五入数字
- 13. 四舍五入数字
- 14. java四舍五入数
- 15. 数字四舍五入
- 16. PHP四舍五入数
- 17. Rspec eq()四舍五入数
- 18. '正确'四舍五入到Python,到小数点后三位
- 19. 爪哇,四舍五入到小数点后两位数
- 20. C#四舍五入双到指定的小数位数
- 21. 如何四舍五入浮点数。到小数点后两位?
- 22. 如何将数字四舍五入到小数点后两位
- 23. sqlite四舍五入'错误'
- 24. CSS计算()四舍五入
- 25. 四舍五入在Python
- 26. 四舍五入在SQL Server
- 27. 如何四舍五入
- 28. ActiveScaffold让我四舍五入
- 29. linq.sum被四舍五入
- 30. HttpServletResponse四舍五入setDateHeader
This Works,thanks。 – user1934312 2013-04-07 09:01:41
呃,一个if分支只是为了四舍五入?加上所需精度的一半,然后轮回,当然! – 2013-04-10 14:30:29