Cocoa:尾数和指数为 0 的 NSDecimalNumber

Posted

技术标签:

【中文标题】Cocoa:尾数和指数为 0 的 NSDecimalNumber【英文标题】:Cocoa: NSDecimalNumber with mantissa and exponent of 0 【发布时间】:2010-01-13 12:02:03 【问题描述】:

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

但是这段代码产生了 5:

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

这是计算机编程中的标准——在未来的 Cocoa 版本中不会被“纠正”吗?

【问题讨论】:

【参考方案1】:

你可能没看过documentation for 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 上的文章:浮点算术标准 (IEEE 754 - 2008)。

【讨论】:

澄清:该方法中的指数是指10上的指数,而不是数字本身(所以@NewMath,你的尾数5和指数0不是5^ 0,而是 5x10^0 = 5x1 = 5)。

以上是关于Cocoa:尾数和指数为 0 的 NSDecimalNumber的主要内容,如果未能解决你的问题,请参考以下文章

关于IEEE754标准浮点数阶码的移码

科学计数法中的尾数基指数

当指数达到-127时如何在python中计算尾数

浮点数在内存中的存放

浮点数在内存中的存放

请问浮点数的尾数最前面的隐藏位是1还是0?