在float值中删除十进制时很奇怪

时间:2017-04-20 10:18:48

标签: objective-c

NSNumber* n = @(7654321098.345);
float maxTimestampInFloat = [n floatValue];
long groundedMaxTimestamp = lroundf(maxTimestampInFloat);
NSNumber* result = @(groundedMaxTimestamp);

结果值变为7654321152,我预计它应该是7654321098。

我检查了浮点数的最大值是:

浮动最大值:340282346638528859811704183484516925440.000000

为什么?

1 个答案:

答案 0 :(得分:0)

代码中的变化很小,

   NSNumber* n = @(7654321098.345);
        double maxTimestampInFloat = [n doubleValue];
        long groundedMaxTimestamp = round(maxTimestampInFloat);
        NSNumber* result = @(groundedMaxTimestamp);

使用double而不是float。我已经从我身边检查了它并且工作正常。

希望这会对你有所帮助。