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

Python中浮点数取余异常咨询:为何0.03%0.01结果为0.01而非0?

浮点数取余的精度陷阱
  • 问题根源在于二进制浮点数无法精确表示部分十进制小数,存储的是近似值,导致取余结果不符合直觉。
  • 像0.1、0.01这类十进制小数,在二进制中是无限循环的,计算机存储时只能保留近似值(比如0.1实际存储为0.10000000000000000555...)。
  • 计算0.3 % 0.1时,实际是用近似的0.3(约0.2999999999999999889...)除以近似的0.1,商并非精确的3,而是略小于3的数值,因此取余后得到接近0.1的结果,最终显示为0.1。
  • 0.03 % 0.01同理,两个数的存储误差导致余数不是0,而是近似0.01的数值。
  • 整数3和1能被二进制精确表示,所以3 % 1的结果是精确的0。

如果要规避这类问题,可以使用专门的十进制精确运算工具(比如Python的decimal模块、Java的BigDecimal类),或者将小数转换为整数计算后再还原。

内容的提问来源于stack exchange,提问作者wen wu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:10:31