只有2时用许多数字表示的十进制数

时间:2019-02-03 19:12:42

标签: python dataframe floating-point precision

我正在尝试输出保存在熊猫系列对象中的十进制数字。

数字是7.45。但是当我输出时它变成7.449999809265137。我需要它是7.45。如何访问确切的数字7.45,而不是接近7.45的浮点值?

--- series_data ['高'] 符号 PIH 7.45 TPNL 0.75 转向2.05 名称:2018-01-02 00:00:00,dtype:float64

--- series_data ['High'] ['PIH'] 7.449999809265137

2 个答案:

答案 0 :(得分:0)

如上所述,保存在存储器中的数字是具有许多小数位的数字。由于某些数值精度问题,您可能已经达到了该数字,并希望看到7.45。浮点数的表示并不总是精确的。例如:

>>> 0.1 + 0.2
0.30000000000000004
>> 

提取数字时,您有两种选择:可以将其格式化为2个小数位(并保留完整的表示形式在内存中),可以强行舍入并更改内存中的内容:

x = numpy.round(x, 2)   # will round x to 2 decimal places and save that value

答案 1 :(得分:0)

浮点不是为精确值而设计的,而是为固有具有一定精度的测量数据而设计的。请阅读https://floating-point-gui.de/

要打印达到一定精度,请使用字符串格式化选项,例如%2f%nr

请不要舍入浮点数