人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlの計算について、なぜ下記は4021ではなく4020が出力されるのでしょうか?
実際のスクリプトは長く$timesが色々な値をとるため、不用意に$max_getに整数以外を出力させないようにintを使っているのですが、この書き方は正しくないのでしょうか?
$times = 0.005;
$min_get = 4000;
$max_get = int( $min_get * (1 + $times) + 1 );
print$max_get;


●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

4000×0.005=20

と考えたいんでしょうけれども
コンピューターは浮動小数点だから
小数点以下の数値は近似値しか扱えませんよ
実際には

4000×0.004999…=19.99999…

になってると思われます


匿名回答1号さんのコメント
https://dobon.net/vb/dotnet/beginner/floatingpointerror.html > 例えば十進数の「0.1」を2進数に変換すると に続く部分を参照のこと

匿名質問者さんのコメント
ありがとうございます。とても参考になりました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ