postgresql круглий підрозділ - sql, postgresql

Я хочу розділити значення і округлити їх до 8 десяткових знаків, але я виявив, що деякі дивізії повертаються наукові позначення.

Як я можу завжди отримати круглий поділ без наукової нотації?

  • select round( 123/100000000::decimal, 8 )

    повертає 0.00000123 як і очікувалося.

  • select round( 1/100000000::decimal, 8 )

    повертає 1e-8 але ... я очікував 0.00000001

Як я можу обійти 1/100000000 до 8 десяткових знаків і повернути 0.00000001 ?

sql скрипка: http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/1534

Дякуємо за допомогу. найкраще,

Відповіді:

1 для відповіді № 1

Це занадто довге для коментаря.

Насправді, коли я спробую ваш код у Postgres 9.3.4, використовуючи pgadmin, обидва повертають потрібні значення. Значення є ні в експоненціальних позначеннях. Таким чином, я підозрюю, що це проблема з вашою програмою, а не з базою даних.

Найпростішим способом перевірки є введення значення у вигляді рядка:

select round( 1/100000000::decimal, 8 )::text

Це має бути ні повернення експоненціальних позначень.


0 для відповіді № 2

Ймовірно, другий випадок перевищує діапазон точності 8.

Ви можете перевірити це питання Вибір чисел з плаваючою точкою в десятковій формі

Крім того, яку версію ви працюєте, тому що в pgAdmin 9.2 я отримую інший результат

введіть опис зображення тут