接下来的json函数会产生带有尾随零的值,而问题是如何避免呢?
SELECT JSON_BUILD_OBJECT('a', (1::NUMERIC / 10));
SELECT JSONB_SET('{}'::JSONB, '{a}', (1::NUMERIC / 10)::TEXT::JSONB);
反对者是
{"a": 0.10000000000000000000}
只有在除法后才能观察到,例如,下一个函数产生的结果不为零
SELECT JSON_BUILD_OBJECT('a', 0.1::NUMERIC); -- {"a" : 0.1}
不具有json功能的除法原理相同
SELECT 1::NUMERIC / 10;-- 0.1
如果有关系,Postgres版本为10.5
答案 0 :(得分:0)
如果您在屏幕上显示json值,可能会很奇怪。尝试将数字转换为双精度,然后再转换为数字,例如:
SELECT JSON_BUILD_OBJECT('a', (1::NUMERIC / 10)::double precision::numeric);
SELECT JSONB_SET('{}'::JSONB, '{a}', (1::NUMERIC / 10)::double precision::numeric::TEXT::JSONB);