Intereting Posts

Неожиданное поведение float от PHPExcel

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