表示从 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 中使用的正确格式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速从数据库获取表属性编写JavaBean

如何从 ant antfile 任务中获取属性

php中金钱数据类型

mysql查询从3种类型中获取项目

mysql 如果处理货币金钱类型

当copylocal属性为false时如何从引用dll中获取类型