PHP integer rounding problems

后端 未结 5 1103
-上瘾入骨i
-上瘾入骨i 2021-01-13 08:31

echo (int) ( (0.1+0.7) * 10 );

Why does the above output 7? I understand how PHP rounds towards 0, but isn\'t (0.1+0.7) * 10 evaluated as

5条回答
  •  无人及你
    2021-01-13 08:47

    See the manual:

    http://php.net/manual/en/language.types.float.php

    It is typical that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9.

提交回复
热议问题