[英]Pandas df.astype('float32') loses a lot of precision
为什么 Pandas.DataFrame 中的float64
值123456789.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
本质上, float32
是numpy
的dtype
。 在将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.