Cocoa:带有尾数和指数为0的NSDecimalNumber

New*_*ath 1 cocoa objective-c mantissa exponent nsdecimalnumber

数学上任何指数为0的数字都应该等于1(我的补习数学研究向我保证).

但是这段代码产生了5:

[NSDecimalNumber decimalNumberWithMantissa:5 exponent:0 isNegative:NO]
Run Code Online (Sandbox Code Playgroud)

这是计算机编程中的标准 - 在未来的Cocoa版本中可以依赖于不被"纠正"吗?

vfn*_*vfn 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];
Run Code Online (Sandbox Code Playgroud)

干杯,
VFN

PS:查看维基百科上的文章:浮点运算标准(IEEE 754-2008).

  • 澄清一下:该方法中的指数是指*10*上的指数,而不是数字本身(因此@NewMath,你的尾数5和指数0不是5 ^ 0,而是5x10 ^ 0 = 5x1 = 5). (3认同)