Używam biblioteki PHP bcmath
do wykonywania operacji na numerach stacjonarnych. Spodziewałem się uzyskać ten sam zachowanie Decimal
klasy Pythona, ale byłem dość zaskoczony, aby znaleźć następujące zachowanie Zamiast:PHP bcmath kontra Python dziesiętny
// PHP:
$a = bcdiv('15.80', '483.49870000', 26);
$b = bcmul($a, '483.49870000', 26);
echo $b; // prints 15.79999999999999999999991853
podczas korzystania Decimal
S w Pythonie uzyskać:
# Python:
from decimal import Decimal
a = Decimal('15.80')/Decimal('483.49870000')
b = a * Decimal('483.49870000')
print(b) # prints 15.80000000000000000000000000
Dlaczego jest to, że ? Ponieważ używam tego do wykonywania bardzo czułych operacji, chciałbym znaleźć sposób na uzyskanie w PHP tego samego wyniku, co w Pythonie (tj. (x/y) * y == x
)
Tak: '$ a = bcdiv ('15 .80' "483.49870000", 26); echo gettype ($ a), "drukuje" ciąg " –
Który z nich jest poprawny, przy okazji? – Will