• ベストアンサー

perl intの動作について

Perlのintについてですが、以下の3の計算結果が異なる理由を教えてください。 1:print 1080/1.08;  →「1000」と表示される 2:print int 1080/1.08;  →「1000」と表示される 3:print int(1080/1.08);  →「999」と表示される Perlのバージョン:ActivePerl v5.14.2 OS:Windows XP

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

手元で試してみた... んだけど, 2 の結果は 999 になってる. ちなみに Windows Vista Business, ActivePerl は 5.14.2 Build 1402 および 5.16.0 Build 1600 で確認. なお, 構文解釈上 2 と 3 は同じなので同じ結果になるはずです.

zuku
質問者

お礼

自分でも他のバージョンで確認してみました。 確かに2の結果は「999」となるようです。 intはいろいろ問題がありそうなので、他の方法を使用することにします。 ご回答ありがとうございました。

その他の回答 (3)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.3

StrawberryPerl-5.14.2とPerl-5.10.1では、2の結果が違うなぁ。 ActivePerlでは  print int(1080) / 1.08; と解釈されてるんでしょうね。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

printf "%.15f\n", 1080/1.08; の結果を見ればわかるかと.

zuku
質問者

補足

結果確認しました。 1000にはなっていないようですね。 逆に、2のパターンで、1000が表示されるのは何故なんでしょうか?

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

下記Perlのドキュメントが分かりやすいかと。 http://perldoc.perl.org/functions/int.html http://perldoc.jp/func/int

zuku
質問者

お礼

情報をご提供いただきありがとうございます。 intはいろいろ問題がありそうなので、他の方法を使用することにします。 ご回答ありがとうございました。

関連するQ&A