PHPExcel意外的浮动行为

Tripskeet

我在我的一个项目中创建了一个新的PHPExcel对象,奇怪的是,在包含库之后,某些float函数的行为。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;

有没有解决的办法?我尝试使用,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

或者,当您回显浮点值以获取要显示的小数位数时,请使用sprintf()或number_format()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章