Mar*_*off 42
你需要将一个或另一个投射到float或double.
int x = 1;
int y = 3;
// Before
x / y; // (0!)
// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)
Run Code Online (Sandbox Code Playgroud)
当然,请确保您将分部的结果存储在double或中float!如果将结果存储在另一个中,对您没有任何好处int.
关于@ Chad的评论(" [tailsPerField setIntValue:tailsPer]"):
setIntValue当你有setDoubleValue等等时,不要传递双人或漂浮物.这可能与我在评论中提到的问题相同,你没有使用显式转换,并且你得到一个无效值,因为double被读作int.
例如,在我的系统上,文件:
#include <stdio.h>
int main()
{
double x = 3.14;
printf("%d", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1374389535
因为试图将double读作int.