如何通过精确保留前两位小数来截断PostgreSQL中的双精度值?

问题描述 投票:0回答:1

我正在尝试使用PostgreSQL 11.8中的json_build_object()函数构建json时截断double precision值,但是没有运气。更精确地说,我正在尝试将19.9899999999999984截断为仅两位小数,但要确保不要将其四舍五入为20.00(实际上是这样),而是将其保持在19.98。] >

BTW,到目前为止,我一直在尝试使用:1)TRUNC(found_book.price::numeric, 2),我得到的值是20.00

2)ROUND(found_book.price::numeric, 2),我得到的值是19.99->到目前为止,这是最接近的值,但不是我所需要的3)ROUND(found_book.price::double precision, 2)我得到

[[42883]错误:函数舍入(双精度,整数)不存在

这也是我的json_build_object()函数

select json_build_object(
        'book_id', found_book.book_id,
        'title', found_book.title,
        'price', found_book.price,
        'amount', found_book.amount,
        'is_deleted', found_book.is_deleted,
        'authors', book_authors,
        'categories', book_categories
    )

如何实现只保留两个第一个十进制数字19。98

(非常感谢您的任何建议/帮助)?

P.S。

PostgreSQL版本为11.8

我试图在PostgreSQL 11.8中使用json_build_object()函数构建json时截断双精度值,但是没有运气。更准确地说,我正在尝试截断19.9899999999999984 ...

json postgresql rounding truncated
1个回答
2
投票

PostgreSQL 11.812.3中,我无法重现:

© www.soinside.com 2019 - 2024. All rights reserved.