2

所以我试图划分两个变量 typelong longtotalBytesWrittentotalBytesExpected

基本上我想弄清楚我的文件上传完成的百分比并相应地更新进度条。例如,我发送 262144 个 1839948 个字节

但是当我这样做时,double progress = totalBytesWritten/totalBytesExpected它会给我一些意想不到的数字。当我 NSLog 进度时,我只得到 0,最后是 1。

谢谢!

4

2 回答 2

3

您正在执行整数除法,然后结果被强制转换为双精度,但为时已晚:您已经失去了精度。如果您只是将两个操作数之一转换为双精度,另一个也将提升为双精度你会得到一个浮点值作为结果:

NSLog(@"%f,"(double)totalBytesWritten/totalBytesExpected);
于 2013-06-20T21:49:19.777 回答
0

long long是一种非小数数据类型,因此它使用整数除法。因此,由于totalBytesWritten可能(希望)小于totalBytesExpected,您将始终得到 0。尝试double先将它们转换为,然后再除。

于 2013-06-20T21:50:43.040 回答