Cha*_*des 0 sql-server database-design types
在我的表中,我想定义一个金额字段.该字段通常是一个只有2位小数的数字
例如,金额最高可达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,十进制,金钱的例子.
在给出这些选项时,我总是会选择DECIMAL,特别是在处理货币时.原因:
DECIMAL比MONEY更灵活; 后者固定为4位小数; 通常你想要更少,但有时更多(便士交易,将欧元兑换成日元等).
FLOAT具有更广泛的近似范围,这可以产生有趣的结果 - 我没有得到当前版本BTW的具体计算结果,但是我确信还有其他例子,可能在这个帖子中.
金钱可能失去重要的精确度.试试这个:
SELECT [money] = $0.46 / $345.70,
[decimal] = 0.46 / 345.70;
Run Code Online (Sandbox Code Playgroud)
另请参阅此主题(超出接受的答案).
以下帖子中的更多信息:
性能/存储比较:MONEY与DECIMAL(抱歉丢失图像)