在Firebird DB中:我读到了数字和小数之间的差异,但仍然不确定哪个更适合价格计算:十进制或数字没有舍入数字?
由于
答案 0 :(得分:8)
NUMERIC
和DECIMAL
的实现在Firebird中几乎完全相同。 Interbase 6.0数据定义指南表示存在细微差别(对于NUMERIC
精度与声明完全一致,对于DECIMAL
,精度至少等于声明的精度)。根据Helen Borrie的 The Firebird Book ,精度小于5的数字只有差异,因为NUMERIC
精度1-4被映射到SMALLINT
精确度为1-9的DECIMAL
映射到INTEGER
。本书还评论NUMERIC
和DECIMAL
都符合SQL-92类型DECIMAL
的行为。
所以说,我建议去DECIMAL
,因为它的行为符合SQL标准中定义的行为,因此对于不熟悉Firebird的人来说不那么令人惊讶,但他们对标准行为有所了解
答案 1 :(得分:2)
它们都同样适合价格计算。但总会有某些类型的计算需要舍入,无论你使用哪一种。
十进制是两者中更灵活的。