[PHP-users 26042] Re: sprintf が返す値
Shindo
shindo @ atsystem.jp
2005年 7月 1日 (金) 21:09:23 JST
島村 様
はじめまして。進藤です。
PHPに限らず一般的なコンピュータ言語で浮動小数を使う限りは、
発生する可能性があると考えてコーディングする必要があります。
誤差が出ないと言い切れるのは、(整数 * 整数)の場合だけです。
片側の数が小数になる場合は、誤差が発生する可能性が常にあります。
ただし、小数でも 2のn乗分の一であれば発生しないはずです。
つまり、0.5, 0.25, 0.125, 0.0625 ... などの場合です。
でも、これは極めて例外的な数ですから考えないほうが良いと思います。
>> 一般的な定石は
>> echo sprintf("%0d", 10.29 * 10000 + 0.5);
>> かな。
>
>これって、いつも成り立つのですか? 今回たまたま 10.29 という値がおかし
>くなったので発見できたのですが、もし、どんな値でも成り立つとするとロジッ
>クを考え直さないといけなくなるかもしれません。んー、ちょっとしんどい。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
進藤寿則@アットシステム _/_/
e-mail shindo@atsystem.jp _/
PHP-users メーリングリストの案内