Я хочу розділити значення і округлити їх до 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 я отримую інший результат