例如,当我写下以下代码时:
double d = (4/3)*6; 为什么它将4/3视为1(int?)不是1.333,结果是6而不是8?
谢谢。
发布于 2015-10-09 16:21:42
4/3等于1,因为它使用整数除法将两个整数相除。4.0/3会给出你所期望的结果,因为它将使用浮点除法。
发布于 2015-10-09 16:23:12
您正在计算整数形式的值,并将结果赋值为双精度值,但结果仍然是一个整数。您可以通过将第一个操作数设置为双精度(或者如果它们是输入变量乘以1.0)来强制进行浮点运算:
double d = (4.0/3)*6; 如果值是输入:
int a = 4;
int b = 3;
int c = 6;您可以通过乘以1.0来强制转换:
double d = (a*1.0/b)*c; 发布于 2015-10-09 16:24:28
因为每个没有指定的数字都是作为整数处理的。
如果你使用1.0,它将是一个双倍的。
对于其他格式,您可以使用1f表示浮点型,使用1l表示长整型,或者使用1d表示双精度型。
https://stackoverflow.com/questions/33033336
复制相似问题