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

问题描述 投票:0回答:1

使用 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

找不到解决此问题的方法

php floating-point rounding precision number-formatting
1个回答
0
投票

当您格式化列时,请尝试这个直接的解决方案:


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

这将取代您的

number_format(round((float)$number, 2 ), 2, '.', '');

希望有帮助~!

© www.soinside.com 2019 - 2024. All rights reserved.