在 NSURLSession 中,当我的文件正在下载时,我会通过以下方式跟踪进度:

CGFloat progress = (CGFloat)totalBytesWritten / (CGFloat)totalBytesExpectedToWrite;

更新屏幕指示器。我需要确保下载完成后指示器消失,就像在我的情况下一样,我显示正在下载的图像。
if (progress == 1.0) { ... } 可以作为支票吗?这可能看起来很傻,但我想确保没有我没有考虑的边缘情况,因为在过去我一直被编程的奇怪除法结果所困扰,也许它会返回 1.0000001.0000001828111 或其他东西,或者它可以甚至做类似 0.99999999999999999 的事情?

最佳答案

使用浮点除法结果的安全检查类似于:

if (progress > (1.0f - FLT_EPSILON))

但是,假设字节数是整数,您可以简单地检查:
if (totalBytesWritten == totalBytesExpectedToWrite)

编辑 :如果根据评论,您无法将整数传递到需要进行此检查的任何地方,您还可以确保在这种情况下 progress 等于 1.0f:
progress = (written < expected) ? ((CGFloat)written / expected) : 1.0f;

关于ios - 检查下载进度时,检查 "progress == 1.0"好吗?还是应该>=?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21977494/

10-12 15:52