我目前在 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
但它没有帮助。
答案 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')]