漂浮物的问题!(在PHP中)

Hap*_*per 2 php floating-point

php浮动有什么问题?

$v = 5.2 * 3;

if($v==15.6) {
    echo 'Everything is fine =)';
} else {
    echo 'Okay something is wrong :S';
    var_dump($v); // float 15.6
}
Run Code Online (Sandbox Code Playgroud)

检查一下:

$v = 5.2 * 3;

if($v>15.6 AND $v<15.60000000001) {
    echo 'We are doomed :S';
    var_dump($v); // float 15.6
} else {
    echo 'Everything is fine =)';
}
Run Code Online (Sandbox Code Playgroud)

我想它与内部表示或一些模糊的低级东西有关?如果是这种情况,我该如何解决这个问题?在用这个来计算真钱交易之前我应该​​知道的其他事情吗?

Gor*_*don 9

我确信这是重复的,所以我把它变成了CW

$v = 5.2 * 3;
if (bccomp($v, 15.6) === 0) {
    echo 'Everything is fine =)';
} else {
    echo 'Okay something is wrong :S';
    var_dump($v); // float 15.6
}
Run Code Online (Sandbox Code Playgroud)

会给'一切都很好=)'