Jasper 没有返回双 Postgres 列的正确精度
Jasper not returning proper precision of double Postgres column
我有一个查询正在创建返回的双精度值数组。
SELECT array_agg(price) rm FROM product;
当我在 Postgres 中 运行 这个查询时 Shell 我得到了预期的输出,
-[ RECORD 1 ]--+----------------------
rm | {79.33,49}
但是当我 运行 与 Jasper Report
相同时,我得到的输出是
-[ RECORD 1 ]--+----------------------
rm | {79.3299999999,49}
是 Postgres JDBC 驱动程序的问题还是缺少我的查询?
您需要将连接的 extra_float_digits
PostgreSQL 变量设置为 0。
如果自己创建连接,可以直接做connection.createStatement().execute("set extra_float_digits to 0")
如果您使用连接池,您可以劫持该验证查询来执行 select set_config('extra_float_digits', '0', false)
如果上述 none 适用,您可以直接在查询中执行,如 select set_config('extra_float_digits', '0', false), array_agg(price) rm from product
我有一个查询正在创建返回的双精度值数组。
SELECT array_agg(price) rm FROM product;
当我在 Postgres 中 运行 这个查询时 Shell 我得到了预期的输出,
-[ RECORD 1 ]--+----------------------
rm | {79.33,49}
但是当我 运行 与 Jasper Report
相同时,我得到的输出是
-[ RECORD 1 ]--+----------------------
rm | {79.3299999999,49}
是 Postgres JDBC 驱动程序的问题还是缺少我的查询?
您需要将连接的 extra_float_digits
PostgreSQL 变量设置为 0。
如果自己创建连接,可以直接做connection.createStatement().execute("set extra_float_digits to 0")
如果您使用连接池,您可以劫持该验证查询来执行 select set_config('extra_float_digits', '0', false)
如果上述 none 适用,您可以直接在查询中执行,如 select set_config('extra_float_digits', '0', false), array_agg(price) rm from product