2016-11-11 28 views
0

私はすべての数値の桁を集計する簡単なPHPタスクを持っています。浮動小数点数とゼロ比較

$number = 345; 
$digit = $number; 
$sum = 0; 

while ($number > 0) { 
    $digit = $number % 10; 
    $sum += $digit; 

    $number /= 10; 
} 

この解決方法は正しい結果をもたらすでしょう。しかし、私はそれがthree times以上のループ方法に入ることを知っています。そして最終的にはゼロに等しくなります。

どうしてですか?何時に浮動小数点数はゼロになりますか?数学の原則に従うだけで、これは無限ループになるでしょうか?そして、3桁、4桁、5桁以上の値があるので、どのように最終結果が12を超えないか(そのわずかな量であっても)。

P.S.私は、例えば$numberの値を丸めてこれを解決すべきだと知っていますが、私は浮動小数点数とその振る舞いについてはちょっと面倒です。あなたは、あなたが本当にこの

$number -= $digit; 
$number /= 10; 

フロートはプラットフォーム固有のものでやるべき数を更新し、このリンク http://php.net/manual/en/language.types.float.php

をチェックアウト

答えて

0

関連する問題