Python 3.x panda将0.6读取为0.59999999998-小数位错误
通过panda,下表中的值以不存在的小数位读取,例如:0.6被读取为0.59999999998(见下面的代码) 我本以为0.6等于0.6 为什么会这样解释?我需要编写什么代码才能获得预期的行为Python 3.x panda将0.6读取为0.59999999998-小数位错误,python-3.x,pandas,Python 3.x,Pandas,通过panda,下表中的值以不存在的小数位读取,例如:0.6被读取为0.59999999998(见下面的代码) 我本以为0.6等于0.6 为什么会这样解释?我需要编写什么代码才能获得预期的行为 ldcSc = pd.read_csv(os.path.join(basepath, 'kmod_table.csv'), skiprows=2) ldcSc LDC 1 2 3 0 permanent 0.6 0.6
ldcSc = pd.read_csv(os.path.join(basepath, 'kmod_table.csv'), skiprows=2)
ldcSc
LDC 1 2 3
0 permanent 0.6 0.6 0.50
1 long-term 0.7 0.7 0.55
2 medium-term 0.8 0.8 0.65
3 short-term 0.9 0.9 0.70
4 instantaneous 1.1 1.1 0.90
print(ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'permanent'].index[0]), '2'))
print(ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'short-term'].index[0]), '1'))
print(ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'medium-term'].index[0]), '3'))
打印到:
0.6
0.9
0.65
但是:
0.59999999998
ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'short-term'].index[0]), '1')
9000000000000002
ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'medium-term'].index[0]), '3')
0.650000000002有关详细信息,请参阅和。简短的版本:计算机没有足够的空间来实现真正的无限精度,所以十进制数字的表示方式在速度和精度上有折衷
ldcSc.get_value((ldcSc.LDC[ldcSc.LDC == 'medium-term'].index[0]), '3')
对于Python中的任意精度小数,您需要该软件包。您能用小数精确表示1/3吗?这与0.1在二进制中的问题完全相同。感谢您的评论。感谢您提供的信息和链接。