gpt4 book ai didi

ios - objective-c 中带有长数的pow操作

转载 作者:行者123 更新时间:2023-12-01 17:56:56 26 4
gpt4 key购买 nike

我试图使操作pow(49999994,13)结果为1.220701e + 100。但是当我在 objective-c 中执行操作时,我得到的结果是-9223372036854775808。如何在Objective-C中正确执行此操作?

最佳答案

Objective-C中没有pow运算符,因此请使用C或NSDecimalNumber(首选)。

战俘

NSLog(@"%f",(double)pow(49999994,13));        // OK 12207012207044960421719...
NSLog(@"%f",(long long int)pow(49999994,13)); // WRONG -9223372036854775808
-92233...来自使用 long long int而不是 double的结果。

NSDecimalNumber

正如Martin R所指出的,在Objective-C中执行此操作的正确方法是 NSDecimalNumber,它会产生尽可能多的准确数字,后跟零。
    NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"49999994e0"];
n = [n decimalNumberByRaisingToPower:13];
NSLog(@"nsdecimal %@",n);

比较结果:
 accurate 12207012207044960931467189309843359073812548192494216675520514965298161665721254575494908505339305984
nsdecimal 12207012207044960931467189309843359073800000000000000000000000000000000000000000000000000000000000000
pow 12207012207044960421719677106210881027530912788496417091073101786581413645039745611250537465292783616.000000

关于ios - objective-c 中带有长数的pow操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com