1

数学的には、指数が 0 の数値はすべて 1 に等しいと想定されています (私の矯正数学研究で確信しています)。

しかし、このコードは 5 を生成します。

[NSDecimalNumber decimalNumberWithMantissa:5 exponent:0 isNegative:NO]

これは、将来の Cocoa バージョンで「修正」されないことに依存できる、コンピューター プログラミングの標準的なものですか?

4

1 に答える 1

8

おそらくdecimalNumberWithMantissa:exponent:isNegativeのドキュメントを読んでいないでしょう:

指数は、仮数が持つ 10 の倍数に関連しています。

仮数は点の右側の値であることを理解する必要があります。

数値を正規化すると、18.23 = 0.1823x10^2 --> 仮数 == 1823、指数 == 2 のような値になります。

使用方法については、それを参照してください。

討論

引数は、仮数が整数である必要がある一種の科学表記法で数値を表します。したがって、たとえば、表現する数値が –12.345 の場合、12345x10^–3 (仮数部は 12345) と表現されます。指数は -3 です。次の例に示すように、isNegative は YES です。

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithMantissa:12345

                                           exponent:-3

                                           isNegative:YES];

乾杯、
VFN

PS: Wikipedia の記事を参照してください: Standard for Floating-Point Arithmetic (IEEE 754 - 2008)。

于 2010-01-13T12:22:01.090 に答える