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