php round number - 当echo它显示2位小数时,如果打印到CSV则显示.0999999

时间:2016-11-17 04:03:41

标签: php floating-point rounding precision number-formatting

使用http://www.maatwebsite.nl/laravel-excel/导出到CSV和Excel。

我有一个$rows数组,其中包含列的所有行。

某些列的格式编号使用number_format(round((float)$number, 2 ), 2, '.', '');$number是查询结果中的列。

如果我var_dump $rows每个数字格式都很好。

当我这样做时

 Excel::create($filename, function($excel) use ($rows) {
    $excel->sheet('Sheet 1', function($sheet) use ($rows) {
        $sheet->rows($rows);
    });
})->export('csv');

它导出为CSV(如果我选择excel会发生同样的情况),有些列显示错误的数字,如82.70999999999999而不是82.71

无法找到解决此问题的方法

1 个答案:

答案 0 :(得分:0)

格式化列时,请尝试以下解决方案:

$number = 82.70999999999999; $float_string = sprintf("%.2f", $number); // $float_string = "82.71";

这将取代您的number_format(round((float)$number, 2 ), 2, '.', '');

希望它有所帮助〜!