3
select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;

Prints:
Earth's Area
------------
   197016573

197016572.595304 が出力されます。ポイントの後の数字が出力で無視されるのはなぜですか?

4

3 に答える 3

4

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 numformatcolumn format

于 2013-01-27T13:57:03.800 に答える
2

これは 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 ドキュメントは、こちらです。

于 2013-01-27T13:56:54.433 に答える
0
to_char((4*(22/7)*3958.759*3958.759)), 'FM99999990D00999999999')

FM は先頭の空白を削除します。9 は、その位置のオプションの数字を表します。D は小数点記号を表します。0 は、その位置の必須の数字を表します。

于 2013-01-27T13:50:47.023 に答える