有没有办法在 Oracle 中保持数字精度(0.100 对 0.1)?出于责任原因,需要存储精度。
我想避免将这些数字存储为字符串,因为还有一组存储过程可以对这些值进行一些数字运算。
不。从 Oracle 的角度来看,数字 0.100、0.1 和 .1 都是相同的。它们都将具有相同的内部表示。
如果您需要存储精度,则需要第二列来存储精度。或者,您需要将数字存储在一VARCHAR2
列中并将其转换为数字,然后再进行数字运算。当然,您需要在数字运算逻辑中定义处理精度的规则。例如,如果将 0.100 和 0.22 相加,结果是 0.32 还是 0.320?
我建议存储查询和数学运算的数值,以及“输入”的字符串版本以用于审计目的。
我建议如果用例只需要显示额外的数字,然后将其转换为字符串作为将数据发送到报告之前的最后一步:
SELECT
TO_CHAR(column_name, 999.999)
FROM
table_name;