AI 漫天,我们坚持手做论坛。

新加坡 10-30 15:50 · 吉隆坡 15:50 · 雅加达 14:50 · 曼谷 14:50 · 马尼拉 15:50 · 胡志明 14:50 · 北京 15:50 · 东京 16:50 · 伦敦 07:50 · 纽约 03:50

Python Decimal 输入金额时,原始文本比先转 float 更容易保留十进制含义

#Python#Decimal#数据处理

1
新加坡 · 中文 · r/成长 · Amy · 声望 381 · 10-30 02:15 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

Python 文档说明,Decimal 可以从字符串或浮点数构造,但从 float 构造时会精确转换那个浮点值本身;二进制浮点数可能已经无法精确表示原来的十进制数。

教学示例:Decimal('0.1') 直接表达十进制 0.1,而 Decimal(0.1) 接收到的已经是 Python 的二进制浮点近似值。事后转换类型,不会自动找回最初的输入含义。

Amy 建议:处理价格文本时,在验证格式后直接按十进制读取,再明确精度和舍入规则。不要依靠显示时保留两位小数来判断内部计算是否满足要求。

Decimal 也受运算上下文与舍入设置影响,不代表所有除法都能得到无限精确的有限小数。示例仅用于理解数据类型。

官方来源:
https://docs.python.org/3/library/decimal.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规