将long long类型的变量除以得到百分比?

时间:2013-06-20 21:44:24

标签: objective-c long-integer

所以我试图划分两个类型long longtotalBytesWrittentotalBytesExpected

的变量

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

但是当我做double progress = totalBytesWritten/totalBytesExpected时,它给了我一些意想不到的数字。当我NSLog进展时,我只得到0,然后最终得到1.

谢谢!

2 个答案:

答案 0 :(得分:3)

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

NSLog(@"%f,"(double)totalBytesWritten/totalBytesExpected);

答案 1 :(得分:0)

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