use*_*253 1 math objective-c ios
我试图使操作pow(49999994,13),结果1.220701e + 100.但是当我在客观ci做的时候得到了结果-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
Run Code Online (Sandbox Code Playgroud)
-92233...使用a long long int而不是a的结果double.
正如Martin R所说,在Objective-C中使用它的正确方法是NSDecimalNumber,产生尽可能多的准确数字,然后是零.
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"49999994e0"];
n = [n decimalNumberByRaisingToPower:13];
NSLog(@"nsdecimal %@",n);
Run Code Online (Sandbox Code Playgroud)
比较结果:
accurate 12207012207044960931467189309843359073812548192494216675520514965298161665721254575494908505339305984
nsdecimal 12207012207044960931467189309843359073800000000000000000000000000000000000000000000000000000000000000
pow 12207012207044960421719677106210881027530912788496417091073101786581413645039745611250537465292783616.000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |