数学的には、指数が 0 の数値はすべて 1 に等しいと想定されています (私の矯正数学研究で確信しています)。
しかし、このコードは 5 を生成します。
[NSDecimalNumber decimalNumberWithMantissa:5 exponent:0 isNegative:NO]
これは、将来の Cocoa バージョンで「修正」されないことに依存できる、コンピューター プログラミングの標準的なものですか?
数学的には、指数が 0 の数値はすべて 1 に等しいと想定されています (私の矯正数学研究で確信しています)。
しかし、このコードは 5 を生成します。
[NSDecimalNumber decimalNumberWithMantissa:5 exponent:0 isNegative:NO]
これは、将来の Cocoa バージョンで「修正」されないことに依存できる、コンピューター プログラミングの標準的なものですか?
おそらく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)。