表示从 MySQL 数据库中获取的“金钱”属性时,在 PHP 中使用的正确格式是啥?
Posted
技术标签:
【中文标题】表示从 MySQL 数据库中获取的“金钱”属性时,在 PHP 中使用的正确格式是啥?【英文标题】:What is the correct format to use in PHP when denoting "money" attribute fetched from MySQL database?表示从 MySQL 数据库中获取的“金钱”属性时,在 PHP 中使用的正确格式是什么? 【发布时间】:2015-04-27 17:46:56 【问题描述】:我在 php/mysql 中使用 "number_format" 函数来表示 money" 属性。
属性本身存储在我的数据库中。
Select account_balance from my_table where login = 'xxxxxx';
$correct_account_balance = number_format($account_balance,
['my_balance'],2);
换句话说:表示“2”会在小数点后添加两个额外的数字,如下:10.00(例如)
此代码运行良好............除了一个小问题:如果小数点后的金额末尾有一个零,它不会显示!
例如:如果金额是 10 美元和 35 美分,它会正确显示:10.35
但是,如果金额为 10 美元和 30 美分,则显示为:10.3(而不是:10.30)
原因是:在我使用“number_format”函数转换之后,我的程序还会对 account_balance 执行算术运算。
例如:
$correct_account_balance -= 0.25 (this will subtract 0.25 each time the program is executed)
这就是为什么在实际金额末尾有一个“零”(例如:10.30)时,它会显示为:10.3
有没有办法解决这个问题? Google 似乎不知道;
【问题讨论】:
【参考方案1】:原因是:在我使用“number_format”函数转换之后,我的程序还会对 account_balance 执行算术运算。
对number_format
进行操作后需要重新运行。
你真的不应该在它准备好显示之前运行它,它添加到更大数字的逗号会极大地弄乱你的计算。举个例子:
<?php
$number = 100000.30;
$number = number_format($number, 2);
$number -= 0.25;
echo number_format($number, 2);
输出结果:
99.75
这意味着您刚刚因类型转换错误从客户那里盗取了 99,900.55 美元。
【讨论】:
以上是关于表示从 MySQL 数据库中获取的“金钱”属性时,在 PHP 中使用的正确格式是啥?的主要内容,如果未能解决你的问题,请参考以下文章