I think your solution by changing precision is not good enough because float 
summation is still not working properly.

<?php
var_dump(0.1 + 0.7);

returns:

0.7999999999

expected: 0.8

On Jan 7, 2019 7:17 PM, Semen Dubina <p...@sam002.net> wrote:
>
> > 07.01.2019, 20:24, "Thomas Bley" <ma...@thomasbley.de>: 
> > 
> > Hello, 
> > 
> > good point, having: 
> > 
> > echo ini_get('precision') . PHP_EOL; 
> > echo ini_get('serialize_precision') . PHP_EOL; 
> > echo json_encode(array('price' => round('45.99', 2))) . PHP_EOL; 
> > echo (0.1+0.7), json_encode(0.1+0.7) . PHP_EOL; 
> > 
> > gives (https://3v4l.org/ldgo8): 
> > 
> > Output for 7.1.0 - 7.3.0 
> >     14 
> >     -1 
> >     {"price":45.99} 
> >     0.80.7999999999999999 
> > 
> > Output for 5.3.6 - 5.6.38, 7.0.0 - 7.0.33 
> >     14 
> >     17 
> >     {"price":45.99} 
> >     0.80.8 
> > 
> > what is the preferred way to upgrade from php 5.6 to 7.x in order to get 
> > the same results? 
> > 
> > Regards 
> > Thomas 
> > 
>
> Force 'serialize_precision': https://3v4l.org/coaWm 
> But remember - a float is not suitable for output. You need rounded and 
> formatted manually. 
>
> P.S. Try with JS: `JSON.stringify(0.1+0.7);` 
>
> -- Semen V. Dubina https://sam002.net/ 
>
> -- 
> PHP Internals - PHP Runtime Development Mailing List 
> To unsubscribe, visit: http://www.php.net/unsub.php 
>

Reply via email to