在我的表中,我想定义一个金额字段。该字段通常是一个只有2位小数的数字
e.g。 金额最高可达999,999,999.99或999,999,999
此字段乘以费率。
费率字段可以是1.11或0.1234(2位小数或4位小数)
然后另一个字段将保存将结果舍入到小数点后2位的总量。如果总金额为2.516,则将结果保存为2.51。如果总金额为2.556,则将结果保存为2.56
我应该在以下字段中使用哪些数据类型? 1.金额 2.率 3.总金额
我见过定义为FLOAT,十进制,金钱的例子。
答案 0 :(得分:7)
在给出这些选项时,我总是会选择DECIMAL,特别是在处理货币时。原因:
DECIMAL比MONEY更灵活;后者固定为4位小数;通常你想要更少,但有时更多(便士交易,将欧元兑换成日元等)。
FLOAT有一个更广泛的近似范围,这可能会产生有趣的结果 - 我没有得到当前版本BTW的具体计算结果,但还有其他一些例子我肯定,可能在this thread。
MONEY会失去重要的精确度。试试这个:
SELECT [money] = $0.46 / $345.70,
[decimal] = 0.46 / 345.70;
另见this thread(超出接受的答案)。
以下帖子中的更多信息:
答案 1 :(得分:0)
我使用过的大多数系统,包括现有系统和新系统都使用十进制,小数点后4位。