提问人:Tanjil 提问时间:10/8/2023 最后编辑:Tanjil 更新时间:10/9/2023 访问量:106
在 python 中将浮点数列四舍五入到小数点后 2 位 [duplicate]
Rounding a float column to 2 decimal places in python [duplicate]
问:
这个问题在这里已经有答案了:
将浮点数限制为小数点后两位 (37 个答案)
round() 似乎没有正确四舍五入 (21 个答案)
浮点数学坏了吗? (34 个答案)
上个月关闭。
此帖子在上个月经过编辑并提交审核,但未能重新打开该帖子:
原始关闭原因未解决
我正在使用 databricks,并尝试将 pandas 数据帧列舍入到 2 dp。使用 S/O [1] 和 [2] 上的现有帖子,我尝试了以下代码:
#=========== Solution 1 ==============#
df['value'] = round(df['value'], 2)
#=========== Solution 2 ==============#
def round_and_format(x):
from decimal import Decimal, ROUND_UP
return float(Decimal(str(x)).quantize(Decimal('0.01'), rounding=ROUND_UP))
df['value'] = df['value'].apply(round_and_format)
#=========== Solution 3 ==============#
df['value'] = (df['value']*100).astype(int)/100
不幸的是,在查看 SQL DB 时,上述代码无法正常工作。例如,0.916147589683533 四舍五入为 0.920000016689301。预期值应为 0.92。
我的问题是:
- 我在这里犯了一个明显的错误吗?
- 有人还有其他建议吗?
先谢谢你。
答: 暂无答案
评论
np.float32(0.920000016689301) == np.float32(0.92)