0

在我的表中,我想定义一个金额字段。该字段通常是一个只有 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、money 的例子。

4

2 回答 2

7

在给定这些选项时,我总是会选择 DECIMAL,尤其是在处理货币时。原因:

  • DECIMAL 可以比 MONEY 更灵活;后者固定为小数点后 4 位;通常你想要的更少,但有时更多(便士交易,将欧元兑换成日元等)。

  • FLOAT 具有更广泛的近似值,这可能会导致有趣的结果 - 我没有得到当前版本的特定计算的结果,顺便说一句,但我敢肯定还有其他例子,可能在这个线程中。

  • 金钱可能会失去重要的精确度。尝试这个:

    SELECT [money]   = $0.46 / $345.70, 
           [decimal] =  0.46 /  345.70;
    

    另请参阅此线程(超越已接受的答案)。

  • 以下帖子中的更多信息:

于 2013-11-14T19:56:14.103 回答
0

我使用过的大多数系统,现有的和新的都使用小数点后 4 位的 Decimal。

于 2013-11-14T19:45:51.273 回答