【问题标题】:Objective-C invalid variables values as a doubleObjective-C 无效变量值作为双精度
【发布时间】:2011-03-13 19:58:58
【问题描述】:

我有以下代码...

double time = [[NSDate date] timeIntervalSince1970];
double startTime = time;
double endTime = time;

当我运行代码时,startTimeendTime 甚至没有相互靠近。例如,startTime4378480endTime1883506224

为什么2个时间值会有这么大的差别?

【问题讨论】:

    标签: objective-c xcode nsdate


    【解决方案1】:

    首先,对所有变量类型使用NSTimeInterval,而不是double

    下一步 -- 显示您用于打印值的代码。我怀疑你对变量类型使用了错误的格式(因为时间间隔总是有一个小数部分)并且结果有效地打印了垃圾。

    【讨论】:

      【解决方案2】:

      你能链接你用来输出值的代码吗,记住你需要在格式化程序中使用 %f 而不是 %d。以上应该是等价的,因为两者都指向相同的值

      【讨论】:

        【解决方案3】:

        没关系,我遇到的问题是使用了不正确的 NSLog 字符。

        [NSString stringWithFormat:@"%d", startTime]
        

        应该是这样的。

        [NSString stringWithFormat:@"%f", startTime]
        

        【讨论】:

        • 如果您对为什么得到这些错误值感到好奇;整数是 4 个字节,双精度数是 8。如果你要打印 "%d %d %d %d", startTime, endTime,你很可能会看到这两个数字重复。
        猜你喜欢
        • 2015-07-02
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        • 2016-10-05
        • 2015-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多