Did*_*dii 1 c c++ precision int
如果我想分割2个整数a并b产生第三个整数c,我需要在除法之前将除法转换为浮点数或加倍,以确保最大精度吗?
int a,b;
int c1 = a/b; // without cast
int c2 = (float)a/b; // with cast
Run Code Online (Sandbox Code Playgroud)
因此c1更多,更少或更精确c2?
不,你必须限制自己施法.
具有足够大的值,例如1000000000L/1000000001L显然为0,但是当转换为浮动时,它给出1.0,因为(浮点)a ==(浮点)a + 1.
main() {
int a = 1000000000;
printf("%d\n%d", a/(a+1), (int)((float)a/(a+1)));
}
Run Code Online (Sandbox Code Playgroud)
输出:
0
1
Run Code Online (Sandbox Code Playgroud)