NSString 格式化小数引发的bug

2019-04-29  本文已影响0人  YannChee

最近在做一个播放视频的需求,需要缓存视频播放进度,并把进度值缓存到本地,然后其它地方读取缓存,展示进度;
在写入缓存时,其他同事使用 float 类型的变量接收 计算出的进度值,然后 转换成字符换,使用YYCaChe 缓存字符串;
伪代码如下:

CGFloat progress = maxPlayedTime * 1.0 / totalTime;
NSString *progressStr = [NSString stringWithFormat:@"%.1f",progress];

然后,我在取缓存的时候,就发生了bug,取出的进度跟实际不符;
例如: 实际进度是 0.9 ,实际取出时1.0

那么是什么原因造成的呢?

问题出现在这句 [NSString stringWithFormat:@"%.1f",progress]

[NSString stringWithFormat:@"%.1f",progress] 这句代码表示把一个 浮点数格式化成保留一位小数的字符串; 在格式化的过程中 会自动 "四舍五入"

例如,

所以解决这个bug办法有:

上一篇 下一篇

猜你喜欢

热点阅读