2012-08-09 65 views

回答

1

编号0.100,0.1和0.1的数字与Oracle的观点完全相同。他们都有相同的内部表示。

如果您需要存储精度,则需要第二列来存储精度。或者您需要将号码存储在VARCHAR2列中,并在进行号码处理之前将其转换为数字。当然,你需要在数字处理逻辑中定义处理精度的规则。例如,如果添加0.100和0.22,结果是0.32还是0.320?

-1

如果使用情况下,只需要要显示那么它的数据发送到报表之前转换为字符串作为最后一步额外的数字,我建议:

SELECT 
    TO_CHAR(column_name, 999.999) 
FROM 
    table_name; 
+0

这不保证精度。 – duck9 2012-08-09 03:57:23

+0

这不能保持您的精确度? 0.1与0.10相同,对于所有内部过程,您将使用0.1。只有当数据需要报告出来,你显然希望显示精度的程度。由于该用例,您应该使用TO_CHAR将其转换为最后一步。 – 2012-08-09 18:18:49

0

我建议存储两个用于查询和数学运算的数值,以及用于审计目的的“输入”字符串版本。

相关问题