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