求大神指点 ,这段代码为什么无法计算出正确结果 
当前返回的是: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);
?>

解决方案 »

  1.   

    因为数字串中含有非数字字符,所以不能正确的还原成数字
    要这样$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.   

    万能var_dump
      

  3.   

    第六行,number_format函数,第一个参数是"2259.81";第二个参数是小数位数;第三个参数是小数位符号,第四个是千分位符号
    所以结果是"2 259.81",没错,因为千分位符参数所以多了个空格。
    $LabelArray['最低单价']的赋值运算两个string相除自动转成数字,600000正常转换但2 259.81只转换了第一个2,之后遇到非数字字符空格就直接截取了。所以赋值结果是2/600000,也就是你的返回值。
    所以如果想number_format函数返回2259.81,则把第四个参数改为“”即可,(如果不设置第四个参数则默认千分位是逗号,结果还是错的;另外设置千分位参数的同时必须设置小数位符号)如同1L的修改。
    其实这个number_format函数可以直接不用,string参与数学运算会自动转为数字类型。第七行的结果其实也是string。