cod*_*nny 5 php casting currency
我有一个小型的金融应用程序,以 PHP 作为前端,MySQL 作为后端。我有古老的偏见,我在 MySQL 中将货币值存储为美分的整数。我的 HTML 表单允许输入美元值,例如“156.64”,我使用 PHP 将其转换为美分,然后将美分存储在数据库中。
我有一个函数可以从表单中清除美元值,并将其转换为美分。我去掉前导文本,去掉尾随文本,乘以 100 并转换为整数。最后一步是
$cents = (integer) ($dollars * 100);
这几乎适用于所有情况,除了极少数值(例如“156.64”),它始终转换为 15663 美分。为什么要这样做?
如果我这样做:
$cents = (integer) ($dollars * 100 + 0.5);
然后它始终有效。为什么我需要添加该舍入值?
另外,我对将金额存储为整数而不是浮点值的偏见,是否不再需要了?现代浮点计算能否产生足够四舍五入且准确的货币价值,足以保持 100% 准确的会计?
| 归档时间: |
|
| 查看次数: |
8382 次 |
| 最近记录: |