Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php preg_match_所有结果从(数字)字符串到十进制类型_Php_String_Decimal_Preg Match All - Fatal编程技术网

php preg_match_所有结果从(数字)字符串到十进制类型

php preg_match_所有结果从(数字)字符串到十进制类型,php,string,decimal,preg-match-all,Php,String,Decimal,Preg Match All,我有一个脚本,它用给定文件中的一些数字以给定格式标识为preg\u match\u all,(\d\,\d\d\d\d);(十进制,4位小数)。稍后,我需要用它们做一些数学运算来求和、平均值等 使用print\r我可以看到阵列中的所有匹配项,并且一切正常(43456、49098等)。我验证变量的类型,并返回gettype()string 不幸的是,我不能对它们进行数学运算,因为当我在数学表达式中使用变量时,结果总是四舍五入,不管逗号后面是什么 例如: 43456+49098+43456=12,或

我有一个脚本,它用给定文件中的一些数字以给定格式标识为
preg\u match\u all
(\d\,\d\d\d\d);
(十进制,4位小数)。稍后,我需要用它们做一些数学运算来求和、平均值等

使用
print\r
我可以看到阵列中的所有匹配项,并且一切正常(43456、49098等)。我验证变量的类型,并返回
gettype()
string

不幸的是,我不能对它们进行数学运算,因为当我在数学表达式中使用变量时,结果总是四舍五入,不管逗号后面是什么

例如:

43456+49098+43456=12,或120000——如果我使用
number\u格式

我在数字中使用了
而不是
,我用
number\u格式
格式化了结果,但没有成功。我好像错过了什么


谢谢你的帮助

PHP使用
字符作为十进制分隔符,因此在将匹配的数字转换为数字之前,必须将
替换为

$number = floatval(strtr("1,234", ",", "."));
// 1.234
例如:

<?php

$numbers = array("1,234", "5,67");
$numbers = str_replace(",", ".", $numbers);
echo number_format($numbers[0] + $numbers[1], 4, ',', ' ');

PHP使用
字符作为十进制分隔符,因此在将匹配的数字转换为数字之前,必须将
替换为

$number = floatval(strtr("1,234", ",", "."));
// 1.234
例如:

<?php

$numbers = array("1,234", "5,67");
$numbers = str_replace(",", ".", $numbers);
echo number_format($numbers[0] + $numbers[1], 4, ',', ' ');

该错误甚至发生在数字\u格式调用之前——PHP将
视为十进制分隔符,而不是
。您需要替换所有数组元素:

$values_array = str_replace(",", ".", $values_array)

该错误甚至发生在数字格式调用之前——PHP将
视为十进制分隔符,而不是
。您需要替换所有数组元素:

$values_array = str_replace(",", ".", $values_array)

他一定做错了什么事;“1.24”+1等于2.24,而不是2。他一定做错了什么;“1.24”+1等于2.24,而不是2。