在Oracle中有没有办法保留数字精度(0.100 vs 0.1)?由于问责原因,需要存储精度。有没有办法在Oracle中保留数字精度(0.100 vs 0.1)?
我想避免将这些数字存储为字符串,因为还有一组存储过程对这些值进行一些处理。
在Oracle中有没有办法保留数字精度(0.100 vs 0.1)?由于问责原因,需要存储精度。有没有办法在Oracle中保留数字精度(0.100 vs 0.1)?
我想避免将这些数字存储为字符串,因为还有一组存储过程对这些值进行一些处理。
编号0.100,0.1和0.1的数字与Oracle的观点完全相同。他们都有相同的内部表示。
如果您需要存储精度,则需要第二列来存储精度。或者您需要将号码存储在VARCHAR2
列中,并在进行号码处理之前将其转换为数字。当然,你需要在数字处理逻辑中定义处理精度的规则。例如,如果添加0.100和0.22,结果是0.32还是0.320?
如果使用情况下,只需要要显示那么它的数据发送到报表之前转换为字符串作为最后一步额外的数字,我建议:
SELECT
TO_CHAR(column_name, 999.999)
FROM
table_name;
这不保证精度。 – duck9 2012-08-09 03:57:23
这不能保持您的精确度? 0.1与0.10相同,对于所有内部过程,您将使用0.1。只有当数据需要报告出来,你显然希望显示精度的程度。由于该用例,您应该使用TO_CHAR将其转换为最后一步。 – 2012-08-09 18:18:49
我建议存储两个用于查询和数学运算的数值,以及用于审计目的的“输入”字符串版本。
为什么不将有效数字的数量存储为单独的int? – NoBugs 2012-08-09 02:57:44