简体   繁体   中英

Math operations precision in PHP 5, PHP 7

When developing calculator in PHP 5+, can programmer get results without thinking on errors of rounding and imprecise representation of decimal numbers?

I mean built-in perfect ways to get, for example, results with given accuracy.

Or each operation like $x = $y * $z + 0.77 must require to develop additional checks in algorithm like rounding (for avoiding errors)?

So errors or imprecision - is up to PHP built-in core or up to developer? PHP 7 has 64-bit support, what is the improvement on this direction (accuracy of calculations)?

When developing calculator in PHP 5+, can programmer get results without thinking on errors of rounding and imprecise representation of decimal numbers?

Simple answer is No .

Doing arithmetics on decimal basis by using a binary machine like a computer can and will always produce some kind of error.

Many details are explained in this article, it's quite a complex subject. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Simple example from the decimal world:

The fraction 1/3 can not be expressed as a finite floating point number in decimal notation. Often we try it by writing 0.333333333... but that's not 100% accurate.

Same applies to binary number arithmetics.

[Edit] If you need a very high degree of precision than you should have a look at phps BC math functions http://php.net/manual/en/ref.bc.php

I don't think there's anything in PHP 7 that will change this. AS @maxhb points out, doing floating point arithmetic is inherently imprecise so you must mind rounding errors.

The 64-bit capability does not fundamentally change this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM