Java 这个算术运算有什么问题?
例如,当我写作时:Java 这个算术运算有什么问题?,java,integer-arithmetic,Java,Integer Arithmetic,例如,当我写作时: double d = (4/3)*6; 为什么它认为4/3是1(int?)而不是1.333,结果是6而不是8 谢谢。4/3等于1,因为它是用整数除法除两个整数4.0/3将提供您期望的结果,因为它将使用浮点除法。您正在用整数算术计算值,并将结果设置为双倍值,但结果仍然是一个整数。通过将第一个操作数设为双精度(或者如果它们是输入变量,则与1.0相乘),可以强制执行浮点运算: 如果这些值是输入值: int a = 4; int b = 3; int c = 6; 可以通过乘以
double d = (4/3)*6;
为什么它认为4/3是1(int?)而不是1.333,结果是6而不是8
谢谢。
4/3
等于1
,因为它是用整数除法除两个整数4.0/3
将提供您期望的结果,因为它将使用浮点除法。您正在用整数算术计算值,并将结果设置为双倍值,但结果仍然是一个整数。通过将第一个操作数设为双精度(或者如果它们是输入变量,则与1.0相乘),可以强制执行浮点运算:
如果这些值是输入值:
int a = 4;
int b = 3;
int c = 6;
可以通过乘以1.0强制转换:
double d = (4.0/3)*6;
double d = (a*1.0/b)*c;
因为每个没有指定的数字都是作为整数处理的 如果您使用
1.0
,它将是双精度的
对于其他格式,您可以使用
1f
表示浮点,1l
表示长或其他表示双精度的方式是1d
在数字后使用d表示双精度。(4d/3d)