Sto utilizzando la libreria PHP bcmath
per eseguire operazioni su numeri in virgola fissa. Mi aspettavo di ottenere lo stesso comportamento delle classi di Python Decimal
ma sono rimasto molto sorpreso di trovare il comportamento seguente invece:PHP bcmath rispetto a Python Decimal
// PHP:
$a = bcdiv('15.80', '483.49870000', 26);
$b = bcmul($a, '483.49870000', 26);
echo $b; // prints 15.79999999999999999999991853
durante l'utilizzo Decimal
s in Python ottengo:
# Python:
from decimal import Decimal
a = Decimal('15.80')/Decimal('483.49870000')
b = a * Decimal('483.49870000')
print(b) # prints 15.80000000000000000000000000
Perché è che ? Come sto usando questo per eseguire operazioni molto sensibili, vorrei trovare un modo per ottenere in PHP lo stesso risultato come in Python (cioè (x/y) * y == x
)
Sì: '$ a = bcdiv ('15 .80' , '483.49870000', 26); echo gettype ($ a); 'stampa" stringa " –
Quale è corretta, btw? – Will