## Code The World

Codice est quasi poem a.

# Python 中关于 round 函数的小坑

- 2023-02-25
- 作者 Bigsk
- 959 字

本文最后编辑于 前，其中的内容可能需要更新。

遇到的小坑，`round(10.5)`得到的结果是10，很疑惑，查了一下资料，总结一下：

## round的结果跟python版本有关

这是Python 2：

    1
    2
    3
    4
    5
    6

    $ python
    Python 2.7.8 (default, Jun 18 2015, 18:54:19)
    [GCC 4.9.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> round(0.5)
    1.0

这是Python3：

    1
    2
    3
    4
    5
    6

    $ python3
    Python 3.4.3 (default, Oct 14 2015, 20:28:29)
    [GCC 4.8.4] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> round(0.5)
    0

## 为什么？

看一下文档：

> Values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done away from 0.

这是Python2.7的文档，可以看到这里是真正意义上的四舍六入。但到了Python3就变成了这样：

> Values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice.

此时，如果距离两边一样远，会保留到偶数的一边。比如`round(0.5)`和`round(-0.5)`都会保留到`0`，而`round(1.5)`会保留到`2`。

##### 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可

Codice est quasi poem a.

文章 24 分类 3 标签 3

#### 分类目录

- 技术 15
- 摄影 7
- 资源 2

#### 标签聚合

技术 摄影 资源

#### 最新文章

Python证书链出问题导致的模块全部报错 Mac安装软件时提示已损坏的解决办法 摄影作品：Field Python 中关于 round 函数的小坑 PVE LXC容器与宿主机共享目录