php - Error With Using (int) and (double) together to Cut off Decimals -



php - Error With Using (int) and (double) together to Cut off Decimals -

when using (int) (double) times not working correct. @ php code example:

i need leave 2 decimals , remove other... i know number_format(); function cannot utilize it. because rounding number

number_format(24.299,2); output: 24.30 need: 24.29

<?php $str="158.2"; echo (double)$str; // output: 158.2 echo (double)$str*100; // output: 15820 echo (int)((double)$str*100); // output: 15819 <-why? must 15820, why 15819? echo ((int)((double)$str*100)/100); // output: 158.19 ?>

i need leave 2 decimals in number , cutting other without rounding.

because of floating point precision (see illustration question: php math precision), 158.2 * 100 not exactly 15820 15819.99999999.

now (int) type conversion, not rounding, , digits after point cutting of.

i need leave 2 decimals in number , cutting other without rounding.

this easy:

number_format($str, 2);

update

number_format does round, bit more complicated:

bcmul($str,100,0)/100

bcmul multiplies arbitrary precision, in case 0. results:

bcmul(158.2,100,0)/100 == 158.2 bcmul(24.299,100,0)/100 == 24.29

php floating-point int double floating-point-precision

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -