Answers:
Decimal(19,4)
在大多数情况下,类似的东西通常效果很好。您可以调整比例和精度以适合需要存储的数字的需求。即使在SQL Server中,我也倾向于不使用“ money
”,因为它是非标准的。
(19,4)
代替的好处是(19,2)
什么?
您唯一需要注意的是,如果您从一个数据库迁移到另一个数据库,您可能会发现DECIMAL(19,4)和DECIMAL(19,4)的含义不同。
(http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html)
DBASE:10,5(10个整数,5个十进制) MYSQL:15.5(15位数字,10整数(15-5),5个十进制)
计算出可能需要多少个小数位也很重要。
我处理了一个股价应用程序,该应用程序需要计算一百万股的价格。所报股价必须存储为7位数的准确性。
阿萨夫的回应
取决于你有多少钱...
听起来很客气,但实际上是相关的。
直到今天,我们才遇到一个问题,即由于其中一列(GrossRate)设置为Decimal(11,4),并且我们的产品部门刚刚获得了某令人惊叹的度假胜地的客房合同,因此无法将记录插入到“费率”表中在波拉波拉岛,它的每晚售价为几百万太平洋法郎……这在十年前设计数据库架构时从未被过时。
对于会计应用程序,将值存储为整数是很常见的(有些甚至认为这是唯一的方法)。要想出一个主意,请取交易金额(假设$ 100.23),然后乘以100、1000、10000等,以得到所需的准确性。因此,如果您只需要存储美分并且可以安全地向上或向下取整,则乘以100。在我的示例中,这将使10023作为要存储的整数。您将节省数据库中的空间,比较两个整数比比较两个浮点数要容易得多。我的$ 0.02。
超级迟到,但GAAP是很好的经验法则。
如果您的应用程序需要处理高达一万亿美元的货币值,那么这应该起作用:13,2如果您需要遵守GAAP(公认会计原则),则使用:13,4
通常,在将输出舍入到13.2之前,您应该将货币值总和为13.4。
资料来源:在MySQL中存储货币价值的最佳数据类型
这取决于数据的性质。您需要事先考虑一下。
尽管MySQL允许您使用十进制(65,30),但是如果我们想使传输选项保持打开状态,则刻度为31,精度为30似乎是我们的限制。
最常见的RDBMS中的最大规模和精度:
精密秤 甲骨文31 31 T-SQL 38 38 MySQL 65 30 PostgreSQL 131072 16383
2015年9月,津巴布韦政府表示,将以1美元对35万亿津巴布韦美元的汇率将津巴布韦美元兑换1美元5
我们倾向于说“是的,当然...我不需要那个疯狂的人物”。好吧,津巴布韦人也曾经这样说。不久前。
假设您需要记录一笔100万美元的津巴布韦美元交易(今天可能不太可能,但是谁知道十年后的情况如何?)。
- (1百万美元)*(35 Quadrylion ZWL)=(10 ^ 6)*(35 * 10 ^ 15)= 35 * 10 ^ 21
- 我们需要:
- 2位数字存储“ 35”
- 21位数字存储零
- 小数点右边的4位数字
- 这使得十进制(27,4)花费我们每个条目15个字节
- 我们可以在左边不加任何数字地增加一个数字-我们有15字节的小数(28,4)
- 现在,我们可以存储以津巴布韦美元表示的1000万美元交易,也可以避免发生另一次髋关节通货膨胀,希望这种情况不会发生