19

アルゴリズムの無限大のリストを初期化しています。書くの$x = 9**9**9は直感的ではなく、将来的にはBigIntを使いたいと思うかもしれません。1/0エラーをスローします。

取得するための標準的な方法は何infですか?

4

2 に答える 2

19

特別な文字列を使用できます"inf":

perl -E'say "inf" + 1'
inf
perl -E'say 1 / "inf"'
0

など。

その他の特殊文字列には+inf、、、. もちろん、これはorプラグマでも機能します。ただし、これらのプラグマは同等の関数をエクスポートするため、ベアワードを使用できます。-infnanbignumbigintinfNaN

編集

@ikegami が指摘したように、モジュールなしで真の無限大を実現する移植可能な方法はないようです。この興味深い perlmonks スレッドをざっと見てみましたが、それほど混乱することはありません。おそらく最善の解決策は、最初からパフォーマンスの低下を受け入れ、必要のない範囲でuse big{num,int,rat}使用することです。no big{num,int,rat}

于 2012-11-30T12:29:00.143 に答える
3

これを行うためにbigratを使用しました。-E が有効にしている機能を判断するのは困難です。

use bigrat;
use feature qw(say);

say inf + inf;
say 9**99 / -inf();  #Perl doesn't always like "-inf" by itself

use bigrat;長い間出回っていたので、かなり移植性があるはずです。

于 2012-11-30T14:25:05.373 に答える