Przeczytałem Floating-Point guide o używaniu typu float w PHP. Odpowiedź jest przy użyciu rozszerzenia BC Math. Używanie łańcuchów może reprezentować zmienną float jako dokładny typ i zapobiegać problemom z float i integer.Najlepsza praktyka dla użycia zmiennoprzecinkowego PHP
Tymczasem nie znalazłem żadnych dobrych przykładów na Github i ta strona działa z rozszerzeniem matematycznym BC. Jaki jest czysty sposób na zmuszanie PHP do używania łańcuchów, jak je oceniać?
W szczególności, jaki jest najlepszy sposób używania rozszerzenia BC Math z typami danych MySQL DECIMAL?
Mój przykład testu z PHP 5.4.10, prawidłowa odpowiedź brzmi: 0,2999999999996
<?php
bcscale(13);
$a = '0.3';
$b = '0.0000000000004';
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.2999999999996
echo '<hr />';
$a = "0.3";
$b = "0.0000000000004";
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.2999999999996
echo '<hr />';
$a = 0.3;
$b = 0.0000000000004;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = '0.3';
$b = '0.0000000000004' + 0;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = (string) 0.3;
$b = (string) 0.0000000000004;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = strval(0.3);
$b = strval(0.0000000000004);
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
?>
um, co jest nie tak w pierwszym i drugim przypadku? Jeśli chcesz poznać "najlepszą" opcję, pojedyncze cudzysłowy "są lepsze niż podwójne" ", ponieważ PHP będzie wymagało poświęcenia dodatkowego czasu na wypełnianie nazw zmiennych i sekwencji unikowych, jeśli użyjesz podwójnych cudzysłowów. – Dave
Dzięki za szybką odpowiedź Dave, używając tych pojedynczych cytatów wykonuje pracę. W jaki sposób będę mieć pewność, że mam odpowiednią wartość, zanim dane mogą zostać utracone. Na przykład przy pobieraniu wierszy z mysql – Mike
@Dave, to po prostu nie jest prawdą w przypadku każdej najnowszej wersji php. Przeczytaj [ten artykuł] (http://nikic.github.com/2012/01/09/Disproving-the-Single-Quotes-Performance-Myth.html). – Maerlyn