划分long long类型的变量以获得百分比?

问题描述:

所以我试图划分两个变量的类型long longtotalBytesWrittentotalBytesExpected划分long long类型的变量以获得百分比?

基本上我试图找出百分比完成我的文件上传并相应更新进度。 例如,我发送262144的1839948字节

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

谢谢!

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

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

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