cx_oracle给出错误的除法输出

时间:2016-07-15 06:49:06

标签: python-2.7

我目前在 Aix 5.1 上使用 Python 2.7.5 cx_Oracle版本5.2连接到Oracle 12c

我正在尝试执行SQL查询,并使用csv模块将其输出放在csv文件中。我正在运行的查询是:

Select 1.563/100, 0.38/100 from dual;  - - simplified query

然而,文件中的输出是:

  

0.015629999999999998,0.0038

当我期待它

  

0.01563,0.0038

在做了一些研究后,我认为这是因为浮点数用二进制基数2表示。

但我不知道如何解决这个问题?

我也试过

from __future__ import division

但它没有帮助。

2 个答案:

答案 0 :(得分:0)

功能ROUND是你的朋友

SELECT ROUND(3.1415926,4),ROUND(3.1415926,5) FROM DUAL;

ROUND(3.1415926,4) ROUND(3.1415926,5)
------------------ ------------------
            3.1416            3.14159

或者,在Python中:

print round (3.1415926, 4)
print round (3.1415926, 5)

3.1416
3.14159

答案 1 :(得分:0)

谢谢ZsigmondLőrinczy。 它通过使用to_char(round())

起作用
>>> import cx_Oracle
>>> con = cx_Oracle.connect(xxx/xxx@xxx)
>>> cur = con.cursor()
>>> cur.execute("select 1.563/100, round(1.563/100,5), to_char(round(1.563/100,5))           from dual")
>>> l_result = cur.fetchall()
>>> l_result
[(0.015629999999999998, 0.015629999999999998, '0.01563')]