本帖最后由 vbker 于 2014-07-20 23:30:47 编辑

解决方案 »

  1.   

    没有数据代码,猜想……
    看看  echo PHP_INT_MAX;   输出什么?
      

  2.   

    toFixed 方法
    返回一个字符串,代表一个以定点表示法表示的数字。numObj.toFixed([fractionDigits])参数
    numObj必选项。一个 Number 对象。fractionDigits可选项。小数点后的数字位数。其值必须在 0 – 20 之间,包括 0 和 20。说明
    toFixed 方法返回一个以定点表示法表示的数字的字符串形式。该字符串中小数点之前有一位有效数字,而且其后必须包含 fractionDigits 数字。如果没有 fractionDigits 参数,或者该参数为 undefined,toFixed 方法假定该值为 0。
    对于你显示的数据保留2位小数则有a = -80.27;
    b = 53.51;
    c = 26.76;document.write((a+b+c).toFixed(2));
    0.00
      

  3.   

    哟,搞错了!还以为是 js 问题呢
    有关计算精度问题在计算时不需过度考虑,否则误差积累的更快
    只需在显示时处理到合适的精度即可$yuejie = 0;
    $a = array(
      array('yuejie' => -80.27),
      array('yuejie' => 53.51),
      array('yuejie' => 26.76),
      array('yuejie' => -38.29),
      array('yuejie' => 38.29),
    );
    foreach($a as $v) {
      $yuejie += $v['yuejie'];
      printf("%8.2f %8.2f\n", $v['yuejie'], $yuejie);
    }  -80.27   -80.27
       53.51   -26.76
       26.76     0.00
      -38.29   -38.29
       38.29     0.00