会计系统 - MySQL和PHP精度

Accounting system - MySQL and PHP precision

提问人:bfavaretto 提问时间:4/23/2012 更新时间:4/24/2012 访问量:1334

问:

我正在用PHP和MySQL构建一种会计系统。我的数据库包含货币列,以及用于货币操作的所有其他值(如要应用的百分比)。我以前从未编写过这样的东西,所以我不确定我是否在做正确的事情。DECIMAL (11,2)DECIMAL

我是否在数据库中使用了正确的精度级别?

在PHP方面:

我是否应该对以后可能存储在数据库中的任何值使用 BC Math 函数?

我还必须将货币值格式化为小数点和千位分隔符。我知道,并且最近发现,但手册说两者都使用浮子。,.number_formatmoney_format

是否可以将 number_formatmoney_format 用于将显示或导出到 CSV 或 Excel 的值?

php mysql 货币 浮动精度 bcmath

评论

0赞 Ja͢ck 4/23/2012
我可能是错的,但通常金融系统会使用至少 3 个小数位数 ()。PHP 本身对浮点数并不擅长;最好的可能是执行 x100 并仅使用整数,可以选择使用 BC Math。DECIMAL(10,3)
0赞 Ruslan Osipov 4/23/2012
只是一个简短的说明 - 在处理金钱时使用浮点数通常不是一个最好的主意。
3赞 bfavaretto 4/23/2012
@pyrate我知道,这就是我问这个问题的原因。
0赞 Sarath 4/23/2012
这是类似的问题[已回答][1] [1]:stackoverflow.com/questions/628637/best-data-type-for-currency

答:

0赞 Dev 4/24/2012 #1

您可以使用 number_format() 将内容显示或导出为 CSV/Excel。但请记住,在使用 number_format() 导出为 csv/excel 时,小数点分隔符为逗号(,),您必须使用双引号(“)。Just like "2,22.00".

评论

0赞 bfavaretto 4/25/2012
谢谢,我不知道。无论如何,我想我将以美国格式导出值,Excel 的本地化副本应该会自动检测,并以当前区域设置的正确格式显示值。