gpt4 book ai didi

ios - 来自 [NSString floatValue] 的浮点值在打印时显示不同的结果

转载 作者:行者123 更新时间:2023-11-29 10:43:44 25 4
gpt4 key购买 nike

请查看下面的代码和控制台中的结果。

NSString *strRatio = @"0.03" ;
float f = [strRatio floatValue] ;
NSLog(@"%f, %@", f, f == 0.03 ? @"equal" : @"not equal") ;

结果:

0.030000,不等于

当我在 NSLog(@"%f, %@", f, f == 0.03 ? @"equal": @"not equal") 处添加断点时,我还有一个屏幕截图; ,它给了我一个不同的 f 值,显示 0.0299999993...

谁能解释一下?

  1. 为什么 f == 0.03 的结果是 false?
  2. 为什么f打印出来的值是0.030000,调试时却显示0.0299999993。

enter image description here

编辑:

我期望从@"0.03"转换后f的值为0.03,如何实现?

好像float不能代表0.03。即使我强制将 0.03 赋值给 float 值,我也会得到 0.029999993 作为结果。

最佳答案

该值不是 0.03,它在调试器中显示为 - 0.0299999993

它在日志中显示为 0.03000,因为默认情况下,%f 显示 5 个小数位,因此值 0.0299999993 被四舍五入为 0.03000

将日志更改为使用 %.10f,您将看到真正的值(value)。

关于ios - 来自 [NSString floatValue] 的浮点值在打印时显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23212282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com