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的主要内容,如果未能解决你的问题,请参考以下文章