2016-04-04 2 views

ответ

1

В 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 вычисляется перед добавлением (и любого продвижения) иметь место.

0

По умолчанию он обрезает результат. Так что в вашем случае 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.

0

Результатом любой операции между двумя целыми числами является другое целое число. Если вы хотите получить результат с плавающей запятой, вам необходимо указать один из операндов на float или double.

Смежные вопросы