если я два целое значение INT Фиона = 13 INT обаятельная = 5Может ли два целых деления быть двойными?
выражение Фиона/обаятельная = 2,6
В Java, это становится действительным числом или целым числом?
если я два целое значение INT Фиона = 13 INT обаятельная = 5Может ли два целых деления быть двойными?
выражение Фиона/обаятельная = 2,6
В Java, это становится действительным числом или целым числом?
В Java, как и во многих других типизированных языках, когда вы делите два целых числа вы получите целочисленный результат:
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/3
вычисляется перед добавлением (и любого продвижения) иметь место.
По умолчанию он обрезает результат. Так что в вашем случае fiona/charming усекается до 2.
Но надежда не потеряна! Есть несколько способов, которыми вы можете это сделать. Вы можете наложить либо числитель, либо знаменатель на двойной, а затем результат будет двойным. Так что любой из них будет работать:
double fionasPerCharming = fiona/(double)charming;
double fionasPerCharming2 = (double)fiona/charming;
Или вы можете сделать так, если по какой-то причине вы хотите, хотя это не так много точки.
double fionasPerCharming3 = (double)fiona/(double)charming;
Но одна вещь, которую вы не можете сделать отливают после деления:
double fionasPerCharmingFail = (double)(fiona/charming);
Это не работает, потому что он уже поделен Фиона на обаятельная и получил целочисленный результат, прежде чем пытаться бросить его , Конечно, ваш тип данных будет двойным, но значение будет по-прежнему равно 2. Если вы напечатали его с указанием десятичного знака, он скажет 2.0.
Результатом любой операции между двумя целыми числами является другое целое число. Если вы хотите получить результат с плавающей запятой, вам необходимо указать один из операндов на float
или double
.
Fiona? Очаровательная? Как насчет Шрека? ;) – mrt