今天执行一段代码出错,发现是这么一句有问题
this->fDate[iDataCount] = (float)atoi(ppRecord[0]);
其中ppRecord[0]=“20171101”
执行后this->fDate[iDataCount]的值为20171100.0。
但是同时这一句:
this->fTime[iDataCount] = (float)atoi(ppRecord[1]);
其中ppRecord[1]=“931”
没有问题。着实诡异。
查资料显示,有可能是int到float过程中会造成精度缺失,数字越大,缺失越多。
于是将fDate类型改为double,问题解决。