我正在尝试使用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
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 ...
在PostgreSQL 11.8或12.3中,我无法重现: