objective-c - 浮点工作正常......大多数时候

标签 objective-c ios floating-point nsstring

<分区>

Possible Duplicate:
Correcting floating point numbers

float randNum = arc4random()%(100)-1;

我在某处读到这会给我 1-100 之间的随机数。或者类似的东西。

这条线似乎一直有效,但我将此数字转换为 NSString 以存储/打印为文本,然后将其转换回 float 以进行排序和其他计算。但当我把那个浮标拿回来时,有时它看起来就像是胡言乱语;在变量 View 中像这样:

9   float   9.75303731e-41   

为什么转换为 NSString 并返回 float 会破坏我正在使用的浮点值? (例如,我可能搞砸了什么?或者我应该使用 CGFloat 来代替?)

我认为这就是所有相关的代码:

NSMutableArray *stringArray = [[NSMutableArray alloc] init];
floatArray[30];
// put three random floats into an NSMutableArray of NSStrings
for(int i = 0; i < 3; i++)
{
    float randNum = arc4random()%(100)-1;
    NSString *randString = [NSString stringWithFormat:@"%.3f", randNum];
    [stringArray addObject:randString];
}

// convert NSStrings back to float
for(NSString *string in stringArray)
{
    float temp = [string floatValue];
    floatArray[iterator] = temp;
}

预先感谢您的任何帮助/建议。

编辑:当我单步执行代码时,浮点值看起来很正常,直到“float temp = [string floatValue]”行,这就是该值似乎被垃圾化的地方。

最佳答案

当 arc4random() 的结果是 uint32_t 时,为什么要使用 float?切换到整数类型几乎肯定可以解决所有这些问题,因为我怀疑问题是因为转换为字符串形式只允许 3 个有效数字。如果您使用 %.15f 作为格式会发生什么?

旁注:使用 arc4random_uniform() - 它更简单,并且保证在该范围内均匀随机分布。

关于objective-c - 浮点工作正常......大多数时候,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13479093/

上一篇:objective-c - 调用选择器 :withObject: crashes in Release

下一篇:iphone - UIView不直接显示

相关文章:

IOS 10 语音识别 API : Error Domain=kAFAssistantErrorDomain Code=1101

ios - swift 中的@property/@synthesize 等价物

ios - 如何从一对多关系中正确检索 .allObjects

Perl 转换为 int 错误但仅限于特定数字

ios - 使用 UIActivityViewController 分享视频 - 适用于 Facebook 但不适用于 YouTube

ios - 我如何使用 Google Analytics 跟踪用户对 MFMailComposeViewController 的操作?

ios - 为什么某些 View 在 WidgetKit 中显示为红色的禁止进入标志?

c++ - C++中的截断

java - 如何确认不同的结果是否是由于 float 处理的差异?

ios - ivar 有两种不同的行为方式,但用法相同