Функции построения JSON выдают числовые значения с конечными нулями после деления - PullRequest
0 голосов
/ 05 декабря 2018

Следующие функции 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 голосов
/ 25 июля 2019

Это может быть странно, если вы выводите значение 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...