PHPExcel 意外的 float 行为

标签 php phpexcel

我在我的一个项目中创建了一个新的 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;

有解决办法吗?我尝试使用 setValueExplict 但它说 PHPExcel_Cell_DataType::TYPE_STRING 未找到。

最佳答案

这归结为 PHPExcel 修改了其计算引擎中的 php.ini precision 设置。您可以自己覆盖它:

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() 来获取要显示的小数位数

关于PHPExcel 意外的 float 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107011/

相关文章:

PHP Excel 导入

PHPExcel 注释

php - 用 php 计算字符串中大写字母的最简单、最短的方法?

php - Mysql选择大于或等于今天的最近项目但仅限于一个日期

php - YouTube API无法在Codeigniter中使用

php - 如何修复 PHPExcel 耗尽的内存?

PHPExcel图形设计(边框、图形颜色、图形内部位置)

zend-framework - 在 Zend Autoloader 中找不到 PHPExcel 类

php - 无法通过引用传递参数 2 - uuid PDO

php - PDO Prepare 语句不处理参数