如果我有两个整数值 int fiona = 13 int charming = 5
表达 fiona / charming = 2.6
在java中,是变为实数还是整数?
答案 0 :(得分:1)
在Java中,与许多其他类型语言一样,当你划分两个整数时,你会得到一个整数结果:
AppHost.Init()
将打印int fiona = 13;
int charming = 5;
if(fiona / charming == 2)
System.out.println("int");
。
如果你想要一个双倍,你需要一个分区,其中术语被提升为双倍:
int
将打印int fiona = 13;
int charming = 5;
if((double)fiona / charming == 2)
System.out.println("int");
else
System.out.println("value: " + ((double)fiona / charming));
。在这里,对一个术语的value: 2.6
进行投射会产生double
结果:double
。
请注意,表达式中有促销的优先规则,例如:
double result = (double)fiona / charming;
结果为double result = (double)1 / 2 + 1 / 3;
,因为0.5
的(整数)除法在添加(和任何促销)之前进行评估。
答案 1 :(得分:0)
默认情况下,它会截断结果。所以在你的情况下,fiona / charming会截断为2。
但希望不会丢失!有几种方法可以做到这一点。你可以将分子或分母强制转换为double,然后结果将是double。因此,其中任何一个都可行:
double fionasPerCharming = fiona/(double)charming;
double fionasPerCharming2 = (double)fiona/charming;
或者你可以做到这两点,如果出于某种原因你想要,尽管没有太多意义。
double fionasPerCharming3 = (double)fiona/(double)charming;
但有一件事你不能做的就是分手后施展:
double fionasPerCharmingFail = (double)(fiona/charming);
这不起作用,因为它已经通过迷人分割fiona并在你尝试施放之前获得整数结果。当然你的数据类型将是双倍但值仍然是2.如果你打印它显示一个小数位,它将说2.0。
答案 2 :(得分:0)
两个整数之间的任何操作的结果是另一个整数。如果需要浮点结果,则需要根据需要将其中一个操作数强制转换为float
或double
。