Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Objective-C中使用相同的代码可以得到另一个数值结果 编辑和解决方案:_Objective C_Swift_Nslog - Fatal编程技术网

在Objective-C中使用相同的代码可以得到另一个数值结果 编辑和解决方案:

在Objective-C中使用相同的代码可以得到另一个数值结果 编辑和解决方案:,objective-c,swift,nslog,Objective C,Swift,Nslog,在问了这个问题之后,我意识到:Xcode已经在我的NSLog中自动将我的代码转换为(long)!这就是为什么我得到了不同的结果 敏捷的 nowMillisis:1461865916801.75 目标-C nowMillisis:-2147483648 selfisNSDate*now=[[NSDate alloc]init]在这两种情况下。问题不在于代码产生不同的结果,而在于您打印的结果不同。Objective-C试图将double转换为long,但值溢出 如果打印时未进行转换,则应得到相同的

在问了这个问题之后,我意识到:Xcode已经在我的
NSLog
中自动将我的代码转换为(long)!这就是为什么我得到了不同的结果


敏捷的
nowMillis
is:1461865916801.75

目标-C
nowMillis
is:-2147483648


self
is
NSDate*now=[[NSDate alloc]init]在这两种情况下。

问题不在于代码产生不同的结果,而在于您打印的结果不同。Objective-C试图将
double
转换为
long
,但值溢出

如果打印时未进行转换,则应得到相同的结果:

double nowMillis = 1000 * [self timeIntervalSince1970];
NSLog([NSString stringWithFormat:@"%f", nowMillis]);

问题不在于代码产生了不同的结果,而在于您以不同的方式打印它。Objective-C试图将
double
转换为
long
,但值溢出

如果打印时未进行转换,则应得到相同的结果:

double nowMillis = 1000 * [self timeIntervalSince1970];
NSLog([NSString stringWithFormat:@"%f", nowMillis]);

您正在将目标c一个转换为长,另一个打印为双精度。我想这就是产生差异的原因。你把目标c一个投长,另一个被打印成双精度。我想这就是差异的原因。Thx,我在问了这个问题后才意识到。但答案是thx!Thx,我问了这个问题才意识到。但答案是thx!
double nowMillis = 1000 * [self timeIntervalSince1970];
NSLog([NSString stringWithFormat:@"%f", nowMillis]);