两个整数可以分为两倍吗?

时间:2016-04-04 13:27:52

标签: java integer double

如果我有两个整数值 int fiona = 13 int charming = 5

表达 fiona / charming = 2.6

在java中,是变为实数还是整数?

3 个答案:

答案 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)

两个整数之间的任何操作的结果是另一个整数。如果需要浮点结果,则需要根据需要将其中一个操作数强制转换为floatdouble