我有一个像这样的变量
int tff = 100;
double x = (45/100) * tff;
int y = (int) (tff - x);
System.out.println(y);
应输出55,但为什么输出为100?
答案 0 :(得分:2)
您需要将值标识为它们所代表的特定数字类型。您可以在许多示例中注意到它。例如,没有100d
或100.0
标识符的简单数字将始终作为整数处理。
你可以在这样的数字之后使用类型的标识符。
int tff = 100;
double x = (45/100d) * tff;
int y = (int) (tff - x);
System.out.println(y);
您可能需要此标识符的其他示例可能很长。
// This wont compile since it is out of the integer range
long l = 12312354345346;
// This will compile since it is declared to be a long
long l = 12312354345346l;
答案 1 :(得分:1)
(45/100)= 0.45 当(45/100)为整数时,(45/100)= 0 。所以应该强制(45/100)加倍如下:
double x = ((double)45/(double)100)* tff;
答案 2 :(得分:0)
45
为integer
,100
为integer
,45/100 == 0
您可以尝试使用45.0
和100.0
代替
int tff = 100;
double x = (45.0/100.0) * tff;
int y = (int) (tff - x);
System.out.println(y);
或者您可以将数字转换为双打:
double x = (((double)45)((double)/100)) * tff;
答案 3 :(得分:0)
如果你不先把它加成双。你会得到一个int。所以你的价值会低于'1',java认为它是零。所以,你必须这样做:
int tff = 100;
int value1 = 45;
int value2 = 100;
double x = ((double)value1 / (double)value2) * tff;
int y = (int)(tff - x);
System.out.println(y);
输出将是:55!