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

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

但是这段代码产生了 5:

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

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

【问题讨论】:

    标签: objective-c cocoa exponent nsdecimalnumber mantissa


    【解决方案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)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2020-12-20
    相关资源
    最近更新 更多