012.Bug(精度丢失)_02

情景:服务器返回时间戳,客户端根据时间戳计算出对应的日期,运行在5s、6、6+上都ok,偶然跑在4s上结果显示不同于之前的显示,后尝试跑在iPad 2上异常犹在,跑在iPad air上又是正常的

错误分析:每次跑在对应的机型上结果都一样,想到可能和机型有绝对关系。突然想到了和32位和64位的异同,查阅了资料,得到如下结果:

<1.iPhone从5s(5没有查,官网上没有,以后都按long long给值即可)开始,才是64位的。

<2.在32位机子上,long不小于int的精度,具体要看其他情况,这里情况是long等于int的精度(所以在32位的机子上存储时间戳必须要用long long),所以发生了精度的丢失,在64位的机子上long long才是long long的。

错误启示:操作数据的时候要考虑到精度和数据的类型所能表示的精度范围

  

原文地址:https://www.cnblogs.com/juicecoffeetea/p/4722870.html