浮点数,想保持3位小数,不足3位小数补0
用round(x,3),但是显示的结果,如果只有2位小数的话,也就只显示2个小数
用number_format格式化的话,则相加过程中如果出现千位,则自动转为 1,234.567 这样的数,然后再累加的话,前面的累加就变成0了...有什么办法让数字保持3位小数,且可以正常进行累加的吗?

解决方案 »

  1.   

    如果你不要千分的话
    sprintf('%.3f', 12345.67890);
      

  2.   

    测试可以!!!
    不过返回的也是string类型的,会不会出现累加的时候出现错误啊??
    刚那个遇到123,44.45的情况本来也不知道,刚好在随机测试数据的时候突然发现...不然可就...
      

  3.   

    不知道楼主是要最终的结果保留3位有效数字,还是累加过程中的所有数据都要以3为有效数字的形式显示,
       如果只要最后结果,可以累加到最后,再用sprintf('%.3f', 12345.67890); 这个就不会出现错误了!
      如果显示中间的累加数据(用 $data表示),显示的时候可以用别的变量($formatData)显示,累加的时 候用$data累加,最终的结果也不会因为由于有效数字而造成误差; 如果对累加数据进行处理然后再累加,可能会出现错误; 
      

  4.   

    只在需要输出时才格式化输出值,运算时不能做格式化处理
    printf("%.3f", $num);