所以我试图划分两个变量 typelong long
和totalBytesWritten
totalBytesExpected
基本上我想弄清楚我的文件上传完成的百分比并相应地更新进度条。例如,我发送 262144 个 1839948 个字节
但是当我这样做时,double progress = totalBytesWritten/totalBytesExpected
它会给我一些意想不到的数字。当我 NSLog 进度时,我只得到 0,最后是 1。
谢谢!
所以我试图划分两个变量 typelong long
和totalBytesWritten
totalBytesExpected
基本上我想弄清楚我的文件上传完成的百分比并相应地更新进度条。例如,我发送 262144 个 1839948 个字节
但是当我这样做时,double progress = totalBytesWritten/totalBytesExpected
它会给我一些意想不到的数字。当我 NSLog 进度时,我只得到 0,最后是 1。
谢谢!
您正在执行整数除法,然后结果被强制转换为双精度,但为时已晚:您已经失去了精度。如果您只是将两个操作数之一转换为双精度,另一个也将提升为双精度你会得到一个浮点值作为结果:
NSLog(@"%f,"(double)totalBytesWritten/totalBytesExpected);
long long
是一种非小数数据类型,因此它使用整数除法。因此,由于totalBytesWritten
可能(希望)小于totalBytesExpected
,您将始终得到 0。尝试double
先将它们转换为,然后再除。