我在我的一个项目中创建了一个新的PHPExcel对象,并且奇怪的是在包含库之后一些浮点函数的行为.以round函数为例,在包含PHPExcel之后它不会舍入.
echo round(90.00 + 9.71, 2); // outputs 99.71
$sheet = new \PHPExcel();
$sheet->getProperties()
->setCreator('Bob')
->setTitle('Title');
echo round(90.00 + 9.71, 2); // outputs 99.7099999999
exit;
Run Code Online (Sandbox Code Playgroud)
有没有解决的办法?我尝试使用,setValueExplict但它说PHPExcel_Cell_DataType::TYPE_STRING找不到.
这归结为PHPExcel precision在其计算引擎中修改php.ini 设置.您可以自己覆盖:
echo round(90.00 + 9.71, 2); // outputs 99.71
$savedPrecision = ini_get('precision');
$sheet = new \PHPExcel();
ini_set('precision', $savedPrecision);
echo round(90.00 + 9.71, 2); // outputs 99.71
Run Code Online (Sandbox Code Playgroud)
或者,当您回显浮点值以获取要显示的小数位数时,请使用sprintf()或number_format()