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 代表该位置的强制性数字。