• ベストアンサー

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

  • zuku
  • お礼率85% (12/14)
  • Perl
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • Active Perlでsleepを使う。

    OS:Windows XP Home Edition インタプリタ:Active Perl(v5.8.8 built for MSWin32-x86-multi-thread) 簡単なスクリプトを作っていたのですが、 sleepについて質問があります。 #!/usr/bin/perl $a = 3; $b = 4; if($a > $b){ print "aが大きい"; } else{ print "bが大きい"; sleep(20); } このようなプログラムを書いたとき、 「bが大きい」が20秒遅れて表示されるのは 正しいですか? 私は「bが大きい」が表示されてから、20秒待つように 思えるのですが、実際の動きは「bが大きい」が20秒遅れて 表示されます。

    • ベストアンサー
    • Perl
  • perl インストール後にする動作確認方法

    active perlをインストールしました。 perlの動作確認方法について教えて下さい。 OSはWin98です。 ルートから DOS窓で「perl -v 」、「perl -h 」を打ち込むと正常に表示されます。 「perl -e 'print "Hello World!\n"' 」を打ち込むと何も表示されずにプロンプトが戻ってきます。 これで動いているのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Perl
  • インストールについて(初心者です)

    windows XP でActivePerl からダウンロードして インストールし、コマンドプロンプトで確認 「perl -v」でバージョンが表示されました。 perl v5.8.9 C:\Perlができました。 そのフォルダにhello.pl 内容 print "Hello world!!\n"; をつくりダブルクリックしても 一瞬何かが立ち上がりかけて消えます。 どうなっているのでしょうか? ご存知のお方助けてください。

    • ベストアンサー
    • Perl
  • intの挙動?

    Perlのintをつかって整数化をしているのですが、すこし挙動がおかしいというか 正確な数値が出ませんので質問させていただきました。 $aaa = 21000*0.7; $aaa = int($aaa); print $aaa; 結果:14699 となります。 21000×0.7は14700のはずかと思いますが、なぜか14699になってしまいます。 どう考えてもわからなくなってきました。 どなたかご教授いただけませんでしょうか?

    • ベストアンサー
    • Perl
  • Perlの種類の変更

    以前Perlを使用してみたく、ActivePerlをインストールしました。 その後、共有のPCということもあり、他の人が誤ってPerl5をインストールしました。 またActivePerlに切り替えたい場合、どのような方法がありますでしょうか。 さきほどActivePerlの同じバージョンを再インストールしようとしたら既にインストールされていますみたいなコメントがでてきました。。 どなたかご教授お願い致します。 OSはLinuxです。

  • perlからMySQL5に接続できません

    WindowsでperlからMySQLに接続できません。 perlは以下のようなものです。 結果は「1」と表示されるので、MySQLへの接続ができていないのだと思います。 考えられる原因がわかる方、アドバイスをお願いします。 #!/Perl/bin/perl use DBI; print "Content-type: text/html\; charset=shift_jis\n\n"; print "1"; my($dbh, $sth); $dbh = DBI->connect("DBI:mysql:database=データベース名;host=127.0.0.1", "root", "rootのパスワード",{ RaiseError => 1, AutoCommit => 0 }); print "2"; $sth = $dbh->prepare("select * from テーブル名;"); 以下略 WindowsXP SP2 Apache2.2.4 ActivePerl5.8.8 MySQL5.0

    • ベストアンサー
    • MySQL
  • Perl+DBI+Apacheの動作

    #!C:\\Perl\\bin\\MSWin32-x86-object\\jperl use DBI; print \"Content-type:text/html\\n\\n\"; print \"<html><body>test script</body></html>\\n\"; という内容のスクリプトを指定したフォルダの中に入れても、「test script]とブラウザ上に表示されません。そのまま「#!C:\\Perl\\bin\\MSWin32-x86-object\\jperl use DBI; print \"Content-type:text/html\\n\\n\"; print \"test script\\n\";」と 表示されます。 Apache、ActivePerl、Mysql、DBI、DBDはインストールし、Apacheも動作しているのは確認できます。 どうしてなのでしょうか。解決方法を教えていただけると助かります。どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI
  • Perlのインストール ダウンロード

    Perlの勉強を始めようと思っています、初心者です。 インストールは一応終了し、バージョンの確認も出来ました。 不明点2か所、教えてください。お願いします。 OS:Microsoft Windows XP Home Edition SP2 CPU:AMD Athlon 64 3800+ @ 2400 MHz Windows (R) インストーラ. V 3.01.4000.1823 まずは環境、ということで、下記サイトさんを参照にDLをしました。 http://www.site-cooler.com/ (Perl講座内) ↓ http://www.activestate.com/Products/ActivePerl/Download.html winの選択肢がふたつあり ・Windows (x86) ・Windows 64-bit (x64 AMD64) アスロンだから下かなと思い 「ActivePerl-5.8.8.822-MSWin32-x64-280952.msi」 をDLし、実行したら 「このインストールパッケージはこの種類のプロセッサでサポートされていません。」 というエラーが出てインストールされませんでした。 なので一度戻り、上のWindows (x86) から MSIファイルをDLし実行した結果、インストールされました。 実行がされなかった下の Windows 64-bit (x64 AMD64) はどういった場合なのでしょうか? また、DLするものが二つあり (リンクタイトル→「AS_Package」と「MSI」) 実行したのはMSIファイルですが もう一個のものは圧縮されてあるから自分で解凍してね、 と結局は同じデータ? こちらは何もしなくて大丈夫のものなのでしょうか? 回答よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGI(Perl)を仮想サーバにインストールすることはできますか?

    CGI(Perl)を仮想サーバにインストールすることはできますか? お世話様です。 CGI(Perl)を仮想サーバにインストールすることはできますでしょうか? 仮想サーバの構成 OS:Windows Server 2008 (32bit 及び 64bit) インターネットインフォーメーションサービス:IIS7.0 仮想化ソフト:VMware ESX CGI: ActivePerl また、CGI(Perl)について、最低限のバージョンの指定はありますでしょうか? 上記に記載されていない、必要な機能、ソフトバージョン等があれば 教えてください。 よろしくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう