在Objective-C中使用相同的代码可以得到另一个数值结果 编辑和解决方案:
在问了这个问题之后,我意识到:Xcode已经在我的在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,但值溢出 如果打印时未进行转换,则应得到相同的
NSLog
中自动将我的代码转换为(long)!这就是为什么我得到了不同的结果
敏捷的
nowMillis
is:1461865916801.75
目标-C
nowMillis
is:-2147483648
self
isNSDate*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]);