求大神指点 ,这段代码为什么无法计算出正确结果

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

...全文
786 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxh_33 2018-03-16
  • 打赏
  • 举报
回复
第六行,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。
sanlo_up 2018-03-07
  • 打赏
  • 举报
回复
万能var_dump
newpeng 2018-03-05
  • 打赏
  • 举报
回复
还有,建议不要用中文作为变量或者下标什么的。
newpeng 2018-03-05
  • 打赏
  • 举报
回复
3.3333333333333333E-6 没问题,这是科学计数法,你在它基础上加上一个 1,你就知道了。
veyron5558 2018-03-03
  • 打赏
  • 举报
回复
这个返回的格式 我没法用
xuzuning 2018-03-02
  • 打赏
  • 举报
回复
因为数字串中含有非数字字符,所以不能正确的还原成数字 要这样
$LabelArray['单价最大值'] = number_format(max(explode(",",2259.81)), 2, '.', ''); 
$LabelArray['数量最大值'] = max(explode(",",600000));
$LabelArray['最低单价'] =  $LabelArray['单价最大值']/$LabelArray['数量最大值'];
print_r($LabelArray);
Array
(
    [单价最大值] => 2259.81
    [数量最大值] => 600000
    [最低单价] => 0.00376635
)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧