select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
Prints:
Earth's Area
------------
197016573
197016572.595304 が出力されます。ポイントの後の数字が出力で無視されるのはなぜですか?
SQL*PLUS を使用していると仮定します。残りの数値が表示されない理由は、numwidth
パラメーターの値です。デフォルトでは 10 なので、少し調整する必要があります。たとえば、30 にします。次に例を示します。
SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
Earth's Area
------------
197016573
SQL> set numwidth 31
SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
Earth's Area
----------------
197016572.595304
また、またはのいずれかでnumwidth
パラメーターの値をオーバーライドすることもできますset numformat
column format
これは SQL*Plus であり、データベースから返されるものとは関係ありません。次のように、SQL*Plus 列フォーマット コマンドを使用して、必要なフォーマットを取得できます。
SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
Earth's Area
------------
197016573
SQL> col "Earth's Area" for 99,999,999,999.9999999
SQL> /
Earth's Area
-----------------------
197,016,572.5953040
書式設定オプションの詳細が記載された Oracle ドキュメントは、こちらです。
to_char((4*(22/7)*3958.759*3958.759)), 'FM99999990D00999999999')
FM は先頭の空白を削除します。9 は、その位置のオプションの数字を表します。D は小数点記号を表します。0 は、その位置の必須の数字を表します。