Iphone 在这种情况下,为什么pow()报告的值是无穷大的?

Iphone 在这种情况下,为什么pow()报告的值是无穷大的?,iphone,objective-c,ios,Iphone,Objective C,Ios,我在应用程序中使用的pow函数如下: float IValuePlusOne = (pow(2.25,120)); 但它报告的是一个无限值,而不是正确的结果。我甚至尝试了long-long和long-double数据类型,但无法让它们产生正确的输出 我需要使用其他数据类型吗?或者我需要在代码中做一些其他更改吗?如果您想对double无法保存的值进行计算,请使用。正如其他人所指出的,您正在失去精度,并通过将值转换为float来减少可以表示的值的大小。运行以下代码: double IValue

我在应用程序中使用的pow函数如下:

float  IValuePlusOne =  (pow(2.25,120));
但它报告的是一个无限值,而不是正确的结果。我甚至尝试了long-long和long-double数据类型,但无法让它们产生正确的输出


我需要使用其他数据类型吗?或者我需要在代码中做一些其他更改吗?

如果您想对double无法保存的值进行计算,请使用。

正如其他人所指出的,您正在失去精度,并通过将值转换为float来减少可以表示的值的大小。运行以下代码:

double IValuePlusOne = pow(2.25,120.0);
NSLog(@"Test value: %f", IValuePlusOne);
在我的iPhone上提供以下输出:

测试值:1827688475348373523156051712429585892114432.000000


这看起来是正确的1.827x10^42。

这个答案1.828*10^42可以放入一个双精度。pow不返回双精度吗?另外:当你说它没有给你任何价值时,这意味着什么?你是否在xcode上执行了上面的一行。就像我执行时一样,我在执行后得到了IValuePlusOne的inf值。如果你能在你这一方执行代码,你就会知道这个问题。我指出,这条语句但没有给我任何价值是含糊不清的。值为+无穷大是一个通用错误代码,这将为我提供一些信息来帮助您。我的工作不是为您执行代码,而是帮助您理解问题。您的答案与所指定的类型不符。@zeychin对此表示抱歉。但在我收到inf时,是否有任何解决方案请帮助。。