我猜这是最简单的事情,但这让我很困惑。我确定我以前成功使用过双打,但现在我遇到了麻烦。
我刚刚制作了一个新的'测试'项目,看看我是否可以使它工作,但我想要做的就是设置一个双倍的值。
所以在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 :(
答案 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