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

Numpy四舍五入异常:特定数值舍入结果不符预期

numpy.round舍入异常的原因解析

这个问题的核心不是numpy.round的错误,而是浮点数的二进制存储精度限制导致的:

  • 你输入的数值121921117.714999988675115,作为64位浮点数(Python默认的浮点数类型)存储时,无法精确对应你输入的十进制字面量。因为十进制小数大多无法用有限位二进制小数精确表示,实际存储的二进制浮点数对应的十进制值更接近121921117.71499997。
  • numpy.round直接基于底层存储的二进制浮点数进行舍入计算,所以得到的结果是121921117.71499997,这是符合其计算逻辑的。
  • Python内置的round函数在处理时,对浮点数的十进制表示做了额外的兼容优化,结果更贴近我们的十进制直觉,但本质上也是基于浮点数的近似特性,并非真正解决了精度问题。

验证初始值的实际存储:

x = 121921117.714999988675115
print(x)  # 输出:121921117.71499997

从输出就能看到,这个值在内存中已经被近似,numpy.round的结果正是基于这个近似值计算的。

内容的提问来源于stack exchange,提问作者Ivan R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:48:15