JSON构造函数在除法后产生带尾随零的数值

时间:2018-12-05 08:49:30

标签: postgresql

接下来的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

1 个答案:

答案 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);