繁体   English   中英

Pandas df.astype('float32') 失去了很多精度

[英]Pandas df.astype('float32') loses a lot of precision

为什么 Pandas.DataFrame 中的float64123456789.0被转换为123456792.0 ,只保留 7 个有效数字?

import pandas as pd

df = pd.DataFrame([123456789.0])

#              0
# 0  123456789.0

df = df.astype('float32')

#              0
# 0  123456792.0

本质上, float32numpydtype 在将float64转换为float32时,您看到精度有所不同的原因是,无法使用 32 位 dtype(1 个符号位、8 位指数、23 位尾数)的float32准确表示123456789.0

通常, float32需要float64表示数值所需内存的一半,但是与float64相比, float32可以不太准确地表示数字。

请注意,没有解决方法。 如果您需要表示无法使用 32 位数据类型(如float32表示的特定数字,请使用更高精度的数据类型( float64 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM