Sqlite - удалить конечные нули в десятичной системе счисления

select round (836.0) возвращает 836.0

Как удалить завершающие нули в запросе sqlite.

836,00 должно быть 836 836,440 должно быть 836,44


person user584263    schedule 21.07.2016    source источник
comment
Покажите код, который читает число и отображает его.   -  person CL.    schedule 21.07.2016


Ответы (2)


Если вы хотите 836.44, вам нужен десятичный тип возврата, 836, выраженный таким образом, всегда будет иметь .00. 836 сам по себе должен быть целым числом, и вы не можете смешивать типы в таком столбце.

Единственный вариант - использовать строковый возвращаемый тип и удалить .0*

select rtrim(rtrim(round(FLD, 2), '0'), '.')

Вместо этого это лучше всего делать на уровне презентации.

person Alex K.    schedule 21.07.2016

Для небольших чисел вы можете использовать %g параметр printf() вместе с round().

select round(25.999, 2); --- prints "26.0"

select printf("%g", round(25.999, 2)); --- prints "26"
person mwag    schedule 17.02.2019
comment
что считается малым числом и почему только они могут использоваться с printf? - person ajwood; 03.09.2020
comment
Я нашел это в документации. Подфункция преобразования чисел с плавающей запятой в текст для встроенной функции printf () ограничена точностью до 16 значащих цифр или 26 значащих цифр, если! используется флаг альтернативной формы-2. Каждое двойное число IEEE-754 может быть представлено точно как десятичное значение с плавающей запятой, но для некоторых двойников требуется более 16 или 26 значащих цифр. - это то, о чем вы говорите? - person ajwood; 03.09.2020