首页 > 解决方案 > R(和 python)从 5 或 6 开始向上取整

问题描述

我已经看到了一个问题,其中包含非常多的十进制数字R 舍入解释

round(62.495, digits=2)

给我 62.49。我预计已经 62.5,但似乎 R (3.4.3, 3.5.0) 仅从 6 开始四舍五入,例如,

round(62.485, 2) == 62.48
round(62.486, 2) == 62.49.

由于其他原因,我正在使用该选项

options(digits.secs=6)

据我所知,一轮从5开始。我还用 Python 和 Matlab 进行了测试。Matlab 向上取整,Python 3.5.4 向下取整。

我怎样才能改变这种行为,或者这个定义是否不同,例如欧洲和美国之间?

标签: rpython-3.xmath

解决方案


这是一个浮点表示问题,62.495 实际上由一个稍小的数字表示,然后向下舍入。

print(62.495,digits=22)
[1] 62.49499999999999744205

R的四舍五入是统计四舍五入,或四舍五入到偶数。它应该向上或向下舍入到偶数,例如

round(0.5) # rounds the half down to 0
[1] 0
round(1.5) # rounds the half up to 2
[1] 2

推荐阅读