我在我的应用程序中使用 pow()
函数:
float IValuePlusOne = (pow(2.25,120));
但它报告的是一个无穷大的值,而不是正确的结果。我什至尝试了 long long
和 long double
数据类型,但无法让它们产生正确的输出。
我是否需要使用任何其他数据类型,或者我是否需要对我的代码进行一些其他更改?
最佳答案
正如其他人所指出的,您正在失去精度并减少通过转换为 float 可以表示的值的大小。运行以下代码:
double IValuePlusOne = pow(2.25,120.0);
NSLog(@"Test value: %f", IValuePlusOne);
在我的 iPhone 上输出:
Test value: 1827688475348373523156051712429585892114432.000000
这看起来是正确的 (1.827x10^42)。
关于iphone - 为什么 pow() 在这种情况下报告无限值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473038/