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)