如何转换字符串,如" 3,2563"到" 3.2563",
$number = "3,2563" ;
setlocale(LC_MONETARY,"en_US");
echo money_format("%.4n", $number);
或
$number = number_format($number,4,".","");
两个示例仅输出3.0000
答案 0 :(得分:3)
字符串"3,2563"
不是数字,因此 - 不能这样使用。
它可以使用PHP函数str_replace和类型转换轻松转换为浮点数。
$number = "3,2563";
$number = (float)str_replace(",", ".", $number); // returns (float) 3.2563
// Do whatever you want to do. Now $number is a float.
使用str_replace
,,
替换为.
请注意,小数位分隔符可能因您的PHP配置而异。
答案 1 :(得分:1)
"3,2563"
是一个字符串,您尝试将字符串显示为数字,这是不可能的。
在更改类型之前,您可以将,
替换为.
:
$number = "3,2563";
$number = str_replace(',', '.', $number); // get "3.2563"
$number = (float) $number; // get a floating number
setlocale(LC_MONETARY,"en_US");
echo money_format("%.4n", $number); // shows "3.2563"
echo money_format("%.2n", $number); // shows "3.26"
答案 2 :(得分:1)
你正在使用一个格式错误的字符串,用于所需的用例和代码中的现有逻辑 - 即'3,2563'。让我更清楚一点。在某些国家/地区,使用逗号代替小数来划分某些货币的整数单位和某些货币的小数单位。在其他情况下,逗号和小数表示某种货币的整数单位。这取决于你的目标是什么,根据你提供的例子不明确...加上,我不知道每种货币语法惯例。
在任何情况下,您要使用的一般程序是删除所有逗号或标准化数字(例如,如果您要使用整个单位,请使用32563而不是3,2563),执行操作,以及然后重新应用你想要的约定(我假设它们是货币约定)。如果你只想用小数替换逗号 - 你仍然可以使用str_replace()来完成它。构建一个函数或类来执行此操作,以便您可以重用该代码以用于其他类似问题。
我的建议虽然不明确,但只是使用一些str_replace()逻辑来生成规范化/索引编号。