我在我的应用程序中使用pow()
函数:
float IValuePlusOne = (pow(2.25,120));
但报告的是无限值,而不是正确的结果。我甚至尝试了long long
和long double
数据类型,但无法使它们产生正确的输出。
我需要使用其他数据类型,还是需要在代码中进行其他更改?
答案 0 :(得分:4)
正如其他人所指出的那样,你正在失去精确度并通过强制转换为浮点数来减少你可以表示的值的大小。运行以下代码:
double IValuePlusOne = pow(2.25,120.0);
NSLog(@"Test value: %f", IValuePlusOne);
我的iPhone上的给出输出:
测试值:1827688475348373523156051712429585892114432.000000
看起来是正确的(1.827x10 ^ 42)。
答案 1 :(得分:1)
如果要对双倍无法容纳的值进行计算,请使用NSDecimalNumber
。