会计系统 - MySQL和PHP的精度问题

5
我正在使用PHP和MySQL构建一种会计系统。我的数据库中有用于货币的DECIMAL(11,2)列,以及所有与货币相关的操作所使用的其他值的DECIMAL(例如要应用的百分比)。我以前从未编写过这样的程序,因此我不确定是否做得正确。 在数据库中使用了正确的精度级别吗? 在PHP方面: 对于可能稍后存储在数据库中的任何值,我应该使用BC Math函数吗? 我还必须使用作为小数点和作为千位分隔符格式化货币值。我知道number_format,最近发现了money_format,但手册说两者都使用浮点数。 我可以使用number_formatmoney_format来显示或导出到CSV或Excel的值吗?

我可能说错了,但通常金融系统会使用至少3位小数(DECIMAL(10,3))。PHP本身在处理浮点数方面并不是很好;最好的方法可能是将所有数字乘以100并仅使用整数,可以选择使用BC数学库。 - Ja͢ck
只是一个快速的提示 - 在处理货币时,通常不建议使用浮点数。 - Ruslan Osipov
3
@pyrate 我知道,这就是我问问题的原因。 - bfavaretto
这里有一个类似的问题[已回答]。 - Sarath
1个回答

0

您可以使用number_format()函数来显示或导出内容为csv/excel格式。但是请注意,在使用number_format()函数将内容导出为csv/excel格式时,如果小数分隔符为逗号(,),则必须使用双引号(")。

就像"2,22.00"一样。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接