Я создаю новый объект 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 (), когда вы эхо-значения float, чтобы получить количество десятичных знаков, которые вы хотите отобразить