如何找出浮点数的格式?

时间:2010-06-08 16:30:43

标签: iphone objective-c floating-point

我正在使用其他人的代码,并且有一些具有一些不寻常特性的浮动。

如果我使用:

输出浮动
NSLog(@"theFloat: %f", record.theFloat);

我明白了:

theFloat: 0.000000

但是,如果我使用:

NSLog(@"(int)theFloat = %i", (int) record.theFloat);

我明白了:

(int)theFloat: 71411232

如何发现浮动的真实格式和价值?我知道它应该包含大量数字。

顺便说一句,包含浮点数的Record类以这样的方式对其进行置换:

@property (assign) float* theFloat;

还有floatLength:

@property (assign) int floatLength;

并且有这个方法,它似乎表明float的长度可变(?):

- (void) copyFloat:(float*)theF ofLength:(int)len
{
    float *floatcopy = malloc(len*sizeof(float));
    memcpy(floatcopy, theF, len*sizeof(float));
    self.theFloat = floatcopy;
}

2 个答案:

答案 0 :(得分:0)

你的字段theFloat不是原始类型而是指针。 float *表示它是指向float的指针。您需要取消引用该字段才能获得它的价值。

使用* theFloat获取实际值。

另外,我建议您查看格式说明符。

http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265

答案 1 :(得分:-1)

存储浮点数的内存中的地址由:(int)theFloat:71411232给出 你可能想要使用类似的东西:

NSLog(@"theFloat = %f", (*record.theFloat));

将取消引用指针并为您提供实际数据。