argra****@users*****
argra****@users*****
2008年 12月 14日 (日) 01:01:26 JST
Index: docs/perl/5.10.0/perlnumber.pod diff -u docs/perl/5.10.0/perlnumber.pod:1.1 docs/perl/5.10.0/perlnumber.pod:1.2 --- docs/perl/5.10.0/perlnumber.pod:1.1 Tue Dec 9 02:56:37 2008 +++ docs/perl/5.10.0/perlnumber.pod Sun Dec 14 01:01:25 2008 @@ -53,12 +53,11 @@ =end original -Perl's operator overloading facility is completely ignored here. Operator -overloading allows user-defined behaviors for numbers, such as operations -over arbitrarily large integers, floating points numbers with arbitrary -precision, operations over "exotic" numbers such as modular arithmetic or -p-adic arithmetic, and so on. See L<overload> for details. -(TBT) +Perl の演算子オーバーロード機能はここでは完全に無視されます。 +演算子オーバーロードは、任意の大きさの整数、任意の精度の浮動小数点数、 +合同算術や p 進数算術などの「特殊な」数値の演算などの数値に関するユーザー定義の +振る舞いを指定できます。 +詳細については L<overload> を参照してください。 =head1 Storing numbers @@ -99,8 +98,7 @@ 整数に対して「ネイティブな」という用語が暗示する唯一のものは、 対応している真の整数量の最大値と最小値は 2 のべき乗に近いということです。 しかし、「ネイティブな」浮動小数点数は最も基本的な制限を持ちます: -they may represent only those numbers which have a relatively -"short" representation when converted to a binary fraction. +2 進数分数に変換したときに相対的に「短い」表現を持つ値のみを表現できます。 例えば、0.9 はネイティブな浮動小数点では表現できません; なぜなら 0.9 の 2 進数の分数は無限となるからです: @@ -143,16 +141,15 @@ =end original -Similarly, decimal strings can represent only those numbers which have a -finite decimal expansion. Being strings, and thus of arbitrary length, there -is no practical limit for the exponent or number of decimal digits for these -numbers. (But realize that what we are discussing the rules for just the -I<storage> of these numbers. The fact that you can store such "large" numbers -does not mean that the I<operations> over these numbers will use all -of the significant digits. +同様に、10 進文字列は有限 10 進記数法を持つ数値のみ表現できます。 +文字列であるため、従って任意の長さを持つため、これらの数値のための +指数部や実数部には実用上の制限はありません。 +(しかし、議論しているのはこれらの数値の I<保管> に関するものであると +いうことを理解してください。 +このような「大きい」数値を保管できるということは、これらの数値による +I<操作> が全ての桁を使うということを意味しません。 詳細については L<"Numeric operators and numeric conversions"> を 参照してください。) -(TBT) =begin original @@ -165,13 +162,12 @@ =end original -In fact numbers stored in the native integer format may be stored either -in the signed native form, or in the unsigned native form. Thus the limits -for Perl numbers stored as native integers would typically be -2**31..2**32-1, -with appropriate modifications in the case of 64-bit integers. Again, this -does not mean that Perl can do operations only over integers in this range: -it is possible to store many more integers in floating point format. -(TBT) +実際のところ、ネイティブな整数形式で保管された数値は、符号付きのネイティブな +形式か、符号なしのネイティブな形式のどちらかで保管されます。 +従って、ネイティブな整数として保管される Perl の数値の限界は、典型的には +-2**31..2**32-1 で、64 ビット整数の場合は適切に修正されたものになります。 +再び、これは Perl がこの幅でのみ整数を扱えるということを意味しません: +浮動小数点形式によってもっと多くの整数を保管可能です。 =begin original @@ -180,7 +176,7 @@ =end original -要約すると、Perl の数値は、有限 10 進拡張か、「短い」バイナリ拡張を持つ +要約すると、Perl の数値は、有限 10 進数記法か、「短い」2 進数記法を持つ 数値のみが格納できます。 =head1 Numeric operators and numeric conversions @@ -209,6 +205,8 @@ 6 種類のこのような変換が可能です: +=begin original + native integer --> native floating point (*) native integer --> decimal string native floating_point --> native integer (*) @@ -216,6 +214,15 @@ decimal string --> native integer decimal string --> native floating point (*) +=end original + + ネイティブな整数 --> ネイティブな浮動小数点数 (*) + ネイティブな整数 --> 10 進数文字列 + ネイティブな浮動小数点数 --> ネイティブな整数 (*) + ネイティブな浮動小数点数 --> 10 進数文字列 (*) + 10 進数文字列 --> ネイティブな整数 + 10 進数文字列 --> ネイティブな浮動小数点数 (*) + =begin original These conversions are governed by the following general rules: @@ -235,9 +242,7 @@ =end original -If the source number can be represented in the target form, that -representation is used. -(TBT) +変換元の数値が変換先の形式で表現できるなら、その表現が使われます。 =item * @@ -248,9 +253,9 @@ =end original -If the source number is outside of the limits representable in the target form, -a representation of the closest limit is used. (I<Loss of information>) -(TBT) +変換元の数値が変換先の形式で表現できる限界を超えている場合、最も近い +限界値が用いられます。 +(I<情報の欠落>) =item * @@ -261,9 +266,9 @@ =end original -If the source number is between two numbers representable in the target form, -a representation of one of these numbers is used. (I<Loss of information>) -(TBT) +変換元の数値が変換先の形式で表現できる二つの数値の間にある場合、 +二つの数値表現のどちらかが使われます。 +(I<情報の欠落>) =item * @@ -275,10 +280,9 @@ =end original -In C<< native floating point --> native integer >> conversions the magnitude -of the result is less than or equal to the magnitude of the source. -(I<"Rounding to zero".>) -(TBT) +C<<ネイティブな浮動小数点数 --> ネイティブな整数>> 変換で、結果の絶対値は +変換元の絶対値以下となります。 +(I<「0 への丸め」。>) =item * @@ -292,12 +296,12 @@ =end original -If the C<< decimal string --> native integer >> conversion cannot be done -without loss of information, the result is compatible with the conversion -sequence C<< decimal_string --> native_floating_point --> native_integer >>. -In particular, rounding is strongly biased to 0, though a number like -C<"0.99999999999999999999"> has a chance of being rounded to 1. -(TBT) +もし C<<10 進数文字列 --> ネイティブな整数>> 変換が情報の欠落なしに +行えない場合、結果は +C<<10 進数文字列 --> ネイティブな浮動小数点数 --> ネイティブな整数>> という +変換に準拠します。 +特に、丸めは 0 方向に強く偏っていますが、 +C<"0.99999999999999999999"> のような数が 1 に丸められる可能性はあります。 =back @@ -309,10 +313,10 @@ =end original -B<RESTRICTION>: The conversions marked with C<(*)> above involve steps -performed by the C compiler. In particular, bugs/features of the compiler -used may lead to breakage of some of the above rules. -(TBT) +B<制限>: 上記で C<(*)> マークが付いている変換は C コンパイラによって +行われます。 +特に、使用しているコンパイラのバグ/仕様が上記のルールの一部を破ることに +なるかもしれません。 =head1 Flavors of Perl numeric operations @@ -328,12 +332,10 @@ =end original -Perl operations which take a numeric argument treat that argument in one -of four different ways: they may force it to one of the integer/floating/ -string formats, or they may behave differently depending on the format of -the operand. Forcing a numeric value to a particular format does not -change the number stored in the value. -(TBT) +数値の引数を取る Perl の操作は、引数を 4 つの異なる方法のどれかによって +扱われます: 整数/浮動小数点数/文字列数のどれかに強制されるか、 +オペランドの形式に依存して異なる振る舞いをするかです。 +特定の形式への数値の強制は、保管されている値は変更しません。 =begin original @@ -344,11 +346,9 @@ =end original -All the operators which need an argument in the integer format treat the -argument as in modular arithmetic, e.g., C<mod 2**32> on a 32-bit -architecture. C<sprintf "%u", -1> therefore provides the same result as -C<sprintf "%u", ~0>. -(TBT) +引数として整数形式を必要とする全ての演算子は引数を合同算術として扱います; +つまり、32 ビットアーキテクチャでは C<mod 2**32> です。 +従って、C<sprintf "%u", -1> は C<sprintf "%u", ~0> と同じ結果となります。 =over 4 @@ -372,13 +372,12 @@ 2 項演算子 C<+> C<-> C<*> C</> C<%> C<==> C<!=> C<E<gt>> C<E<lt>> C<E<gt>=> C<E<lt>=> と、単項演算子 C<-> C<abs> C<--> は引数を整数に 変換しようとします。 -If both conversions are possible -without loss of precision, and the operation can be performed without -loss of precision then the integer result is used. Otherwise arguments are -converted to floating point format and the floating point result is used. -The caching of conversions (as described above) means that the integer -conversion does not throw away fractional parts on floating point numbers. -(TBT) +もし両方の変換は精度を失うことなく可能で、演算が精度を失うことなく +実行できるなら、整数の結果が使われます。 +さもなければ、引数は浮動小数点数形式に変換され、浮動小数点数の結果が +使われます。 +(上述したような)変換のキャッシュは、整数変換が浮動小数点数の小数部を +捨てないことを意味します。 =item ++ @@ -390,14 +389,14 @@ =end original -C<++> は上述のその他の演算子と同様に振る舞いますが、 -except that if it is a string -matching the format C</^[a-zA-Z]*[0-9]*\z/> the string increment described -in L<perlop> is used. -(TBT) +C<++> は上述のその他の演算子と同様に振る舞いますが、もし文字列が +C</^[a-zA-Z]*[0-9]*\z/> にマッチングする形式なら、L<perlop> に記述している +文字列インクリメントが使われます。 =item Arithmetic operators during C<use integer> +(C<use integer> 中の算術演算子) + =begin original In scopes where C<use integer;> is in force, nearly all the operators listed @@ -407,11 +406,9 @@ =end original -In scopes where C<use integer;> is in force, nearly all the operators listed -above will force their argument(s) into integer format, and return an integer -result. The exceptions, C<abs>, C<++> and C<-->, do not change their -behavior with C<use integer;> -(TBT) +C<use integer;> が有効なスコープ中では、上述のほとんど全ての演算子は +引数を整数形式に強制し、整数の結果を返します。 +例外は C<abs>, C<++>, C<--> で、C<use integer;> でも振る舞いは変わりません。 =item Other mathematical operators @@ -440,7 +437,7 @@ =item Bitwise operators during C<use integer> -(C<use integer> が有効な場合のビット単位演算子) +(C<use integer> 中のビット単位演算子) =begin original @@ -465,9 +462,7 @@ =end original 引数を整数に強制します。 -This is applicable -to the third and fourth arguments of C<sysread>, for example. -(TBT) +これは例えば、C<sysread> の第 3 引数と第 4 引数に適用されます。 =item Operators which expect a string @@ -494,11 +489,10 @@ =end original -Though forcing an argument into a particular form does not change the -stored number, Perl remembers the result of such conversions. In -particular, though the first such conversion may be time-consuming, -repeated operations will not need to redo the conversion. -(TBT) +引数の特定の形式への強制は保管されている数値は変更しませんが、Perl は変換の +結果を覚えています。 +特に、最初の変換が時間がかかるものであったとしても、同じ操作を繰り返しても +変換を再実行する必要はありません。 =head1 AUTHOR