求大神指点 ,这段代码为什么无法计算出正确结果
当前返回的是:3.3333333333333333E-6<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$LabelArray['单价最大值'] = number_format(max(explode(",",2259.81)), 2, '.', ' ');
$LabelArray['数量最大值'] = max(explode(",",600000));
$LabelArray['最低单价'] = $LabelArray['单价最大值']/$LabelArray['数量最大值'];
echo serialize($LabelArray);
?>
当前返回的是:3.3333333333333333E-6<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$LabelArray['单价最大值'] = number_format(max(explode(",",2259.81)), 2, '.', ' ');
$LabelArray['数量最大值'] = max(explode(",",600000));
$LabelArray['最低单价'] = $LabelArray['单价最大值']/$LabelArray['数量最大值'];
echo serialize($LabelArray);
?>
要这样$LabelArray['单价最大值'] = number_format(max(explode(",",2259.81)), 2, '.', '');
$LabelArray['数量最大值'] = max(explode(",",600000));
$LabelArray['最低单价'] = $LabelArray['单价最大值']/$LabelArray['数量最大值'];
print_r($LabelArray);Array
(
[单价最大值] => 2259.81
[数量最大值] => 600000
[最低单价] => 0.00376635
)
所以结果是"2 259.81",没错,因为千分位符参数所以多了个空格。
$LabelArray['最低单价']的赋值运算两个string相除自动转成数字,600000正常转换但2 259.81只转换了第一个2,之后遇到非数字字符空格就直接截取了。所以赋值结果是2/600000,也就是你的返回值。
所以如果想number_format函数返回2259.81,则把第四个参数改为“”即可,(如果不设置第四个参数则默认千分位是逗号,结果还是错的;另外设置千分位参数的同时必须设置小数位符号)如同1L的修改。
其实这个number_format函数可以直接不用,string参与数学运算会自动转为数字类型。第七行的结果其实也是string。