Может ли кто-то продемонстрировать переменную аппроксимацию для более краткого отображения результатов окончательной переменной? - PullRequest
0 голосов
/ 09 октября 2018

Может ли кто-нибудь дать альтернативный ответ на мои переменные суммирования, если он не является десятичным результатом с плавающей запятой с возможностью отображения окончательного результата в виде целочисленного значения.Целые числа, чтобы быть точными.

С каждой передачей переменной приводит к десятичной записи, окончательное значение больше, чем фактическое перо на бумагу, которую я получаю с помощью калькулятора.

Это результат с echo $ter в результатев плавающем значении 43402777.777778.Это должно быть больше в 42 849 000 вместо первого, последнее значение - моя ручка и бумага.Проблема заключается в выводе окончательного значения в ненаучной записи.Мне нужно прямое значение интергера.

$tan = 100000;
$g = 30;
$epp = 12;
$days = 365;
$bpe = 4;
$pp = 300;

$apg = $tan / $g; 
$epg = $apg / $bpe;
$ppg = $epg / $epp;
$ypr = $ppg * $pp;
$tep = $ppg * $g;
$ter = $ypr * $tep;

echo $ter;

1 Ответ

0 голосов
/ 09 октября 2018

Как обычно в информатике, арифметика с плавающей точкой имеет свой собственный набор проблем.

Библиотеки обычно доступны для большей точности.PHP предлагает функции BC Math .

Ваш пример может быть изменен, чтобы использовать это ...

$tan = 100000;
$g = 30;
$epp = 12;
$days = 365;
$bpe = 4;
$pp = 300;

$apg = bcdiv($tan, $g); 
$epg = bcdiv($apg, $bpe);
$ppg = bcdiv($epg, $epp);
$ypr = bcmul($ppg, $pp);
$tep = bcmul($ppg, $g);
$ter = bcmul($ypr, $tep);
echo '$ter: ', $ter, PHP_EOL; // 42849000
echo 'Formatted: ', number_format($ter), PHP_EOL; // 42,849,000

Демо ~ https://3v4l.org/vlRaS

...