我应该使用' Currency'访问中的数据类型?

时间:2014-08-19 19:32:22

标签: ms-access database-design

为了在MS Access中存储货币值,我有3个选项:

  • Number Double
  • Number Decimal
  • 货币

我应该使用最后一个吗?还是十进制?

我想知道thisthis是否适用于Access?

1 个答案:

答案 0 :(得分:0)

您不想使用double,因为使用此类浮动数字时Excel或Access会导致各种舍入错误。

此代码很好地演示了这个问题:

Public Sub TestAdd() 

   Dim MyNumber      As Single 
   Dim I             As Integer 

  For I = 1 To 10 
      MyNumber = MyNumber + 1.01 
      Debug.Print MyNumber 
   Next I 

End Sub 

以上是上述的输出:

 1.01 
 2.02 
 3.03 
 4.04 
 5.05 
 6.06 
 7.070001 
 8.080001 
 9.090001 
 10.1 

你可以看到,经过7次加法后,已经进行了四舍五入。

计算科学的第一课是计算机不能准确存储浮点数(它们只是近似值)。因此,在处理涉及金钱的金融应用程序时,真的需要避免使用实数。请注意,上面的代码甚至在Excel中运行SAME。

这里的教训是,当您使用涉及金钱的应用程序时,您需要使用整数值来避免舍入。货币是一种数据类型(它是一个整数值,可以包含小数位数)。

我在这里有一篇文章解释了如何处理不会导致Access中出现舍入错误的数字: http://www.kallal.ca/Articles/rounding/Rounding.html

简短的故事和规则只是使用货币数据类型,因为浮动数字会给你带来很多问题。