php - 如何将带逗号的数字转换为货币格式
问题描述
我正在尝试使用功能货币格式将数据库中的数字转换为货币格式。SQL 查询工作正常,输出为
echo "$amount" is 800,600.00.
我试过使用
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $amount) . "\n";
但我收到以下错误:
致命错误:未捕获错误:调用 C:\xampp\htdocs\loan\en\account\payment.php:14 中未定义的函数 money_format() 堆栈跟踪:#0 {main} 在 C:\xampp\htdocs\loan 中抛出\en\account\payment.php 第 14 行
我的总体代码是:
<?php
include('../user/db.php');
$uploaduser = "ruxell4real";
$stmt =$conn->prepare("SELECT * FROM users WHERE username=?");
$stmt->bind_param("s", $uploaduser);
$stmt->execute();
$row = $stmt->get_result();
$result= $row->fetch_assoc();
$amount = $result['balance'];
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $amount) . "\n";
解决方案
您的输入是“800,600.00”形式的字符串。此字符串无法以这种方式转换为浮点数。为此必须删除逗号。我为此使用了一个简单的 str_replace 。
$amount = "800,600.00";
$floatAmount = (float)str_replace(",","",$amount);
//test
var_dump($floatAmount); //float(800600)
然后可以使用相应的函数/类以所需的格式输出此浮点值。
echo "number_format: ". number_format($floatAmount,2,".",","). "<br>";
$fmt = new \NumberFormatter("en_US", NumberFormatter::CURRENCY);
echo "NumberFormatter: ".$fmt->format($floatAmount) . "<br>";
输出:
number_format: 800,600.00
NumberFormatter: $800,600.00
推荐阅读
- sql - Oracle 获取记录,其中字符串不作为子字符串出现在其他行中?
- javascript - 反应选择 onChange 不改变所选值
- sql - 空格/空格的合并功能
- c# - http 413 请求实体太大错误修复
- python - 在 Numpy 中获得向量集并集的有效方法
- vue.js - Vue路由器无法加载组件
- c - 输入字符串后刷新标准输入,随后输入下一个字符
- azure-databricks - 将库附加到 Azure Databricks 群集
- apache-kafka - Kafka中kafka.common.OffsetOutOfRangeException异常的原因是什么
- python - 与 Tensorflow 对象检测 API 联合训练自定义模型