【问题标题】:Adding fractions number yields different result in PHP [duplicate]在PHP中添加分数会产生不同的结果[重复]
【发布时间】:2012-02-02 06:51:59
【问题描述】:

可能重复:
PHP unexpected result of float to int type cast
int((0.1+0.7)*10) = 7 in several languages. How to prevent this?

谁能给我解释一下???

<?php
echo (int) ((0.1 + 0.7)*10);//displays an output: `7`
?>

我期待看到8,但我得到了7 - 请解释这种行为。

这是PHP 的特殊功能吗?还是我看不懂PHP中的整数类型?

谢谢。

【问题讨论】:

标签: php


【解决方案1】:

这个问题在php manual:

此外,有理数可以精确表示为 以 10 为底的浮点数,如 0.1 或 0.7,没有 精确表示为以 2 为底的浮点数,即 内部使用,无论尾数大小。因此,他们 如果没有 精度损失小。这可能会导致令人困惑的结果:对于 例如, floor((0.1+0.7)*10) 通常会返回 7 而不是 预期为 8,因为内部表示将类似于 7.9999999999999991118....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多