xcode中的双重问题或我做错了什么

时间:2010-09-15 11:12:49

标签: iphone objective-c xcode variables double

我猜这是最简单的事情,但这让我很困惑。我确定我以前成功使用过双打,但现在我遇到了麻烦。

我刚刚制作了一个新的'测试'项目,看看我是否可以使它工作,但我想要做的就是设置一个双倍的值。

所以在View Controller的viewDidLoad中我输入了:

double z = 2938.09;
NSLog(@"z = %d", z);

我希望它输出'z = 2938.09',但我得到'z = 343597384'

double z = 3.4返回z = 858993459

此外,大多数整数值报告为z = 0,但并非总是如此(有时会发出上面的另一个奇怪数字)

我在这里遗漏了什么或者发生了什么奇怪的事情?

甚至试过像

这样的东西
NSString *newString = [[NSString alloc] initWithString:@"3.4"];
double z = [newString.text doubleValue];
NSLog(@"z = %d", z);
[newString release];

但仍然疯狂z = 858993459 :(

2 个答案:

答案 0 :(得分:6)

要打印Double值,请使用%f而不是%d。

NSlog格式说明符

%@ Object

%d,%i签署了

%u unsigned

%f float / double

%x,%X十六进制int

%o octal

%zu size_t

%p指针

%e float / double(科学记数法)

%g float / double(%f或%e,取决于值)

%s C字符串(字节)

%S C string(unichar)

%。* s Pascal字符串(需要两个参数,第一个传递pstr [0],第二个传递pstr + 1)

%c字符

%C unichar

%lld long long

%llu unsigned long long

%Lf long double

答案 1 :(得分:4)

Double是双精度浮点数,所以要打印你应该使用与打印浮点数相同的方法:

NSString *newString = [[NSString alloc] initWithString:@"3.4"];
double z = [newString.text doubleValue];
NSLog(@"z = %f", z);
[newString release];

%d用于打印signed int。

使用NSLog的格式说明符查看此链接:http://www.cocoadev.com/index.pl?NSLog