You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy.round输出异常咨询:为何8.5会被舍入为8.0?

关于numpy中0.5舍入结果的解释

这不是numpy的问题,而是它默认采用了银行家舍入法(四舍六入五成双),这是国际上常用的舍入标准,核心规则如下:

  • 舍去部分最高位小于5时,直接舍去;
  • 舍去部分最高位大于5时,向前一位进1;
  • 舍去部分最高位等于5时,若前一位是偶数则舍去,若前一位是奇数则进1(最终让结果为偶数)。

对应你的测试案例:

  • 7.5:整数部分7是奇数,进1后得到偶数8.0;
  • 8.5:整数部分8是偶数,舍去0.5后保留8.0;
  • 0.5:整数部分0是偶数,舍去0.5后得到0.0。

如果需要传统的"四舍五入"(0.5一律进1),可以通过以下方式实现:

  1. 针对正数,使用np.floor(x + 0.5):
    import numpy as np
    print(np.floor(8.5 + 0.5))  # 输出9.0
    print(np.floor(7.5 + 0.5))  # 输出8.0
    print(np.floor(0.5 + 0.5))  # 输出1.0
    
  2. 兼容正负数值的场景,可结合np.sign封装函数:
    def traditional_round(x):
        return np.sign(x) * np.floor(np.abs(x) + 0.5)
    

内容的提问来源于stack exchange,提问作者Meenakshi Mittal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:17:04