iphone - 为什么 pow() 在这种情况下报告无限值?

标签 iphone objective-c ios

我在我的应用程序中使用 pow() 函数:

float  IValuePlusOne =  (pow(2.25,120));

但它报告的是一个无穷大的值,而不是正确的结果。我什至尝试了 long longlong 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/

相关文章:

iphone - UiTextField 和 resignFirstResponder

iphone - iPhone中如何让解析完成后出现tabbar View ?

iphone - 如何在自定义 map iphone 和 android 上进行地理定位

ios - 使用必要的数据源和委托(delegate)扩展 UIView

ios - 将 UILabel 子类从 Objective-C 转换为 Swift

javascript - iOS 中消失的下拉菜单问题?

iphone - 通过向现有 UIImage 添加阴影来创建新的 UIImage

ios - Swift 4 添加手势 : override vs @objc

objective-c - IKImageBrowserView 中重新排序的数据源方法,未被调用

iphone - 为什么 Apple 开发站点上的这段代码示例为同一个类声明了三个接口(interface)?