2015-04-06 3 views
0

Я хочу рассчитать значение 0.95. Вот мой метод:Почему я не могу рассчитать двойное значение?

public static final int VAR = 5; 
private static double getDouble(){ 
     double dis = (double)(VAR/100); 
     dis = (double)(1-dis); 
     return dis; 
} 

Однако, это выход 1.0 ?? Если я набираю тот же код в основном методе, я получил 0,95. Где моя ошибка?

+0

Результат целочисленного деления всегда будет целым числом , В вашем случае ваше целое затем преобразуется в double, поэтому рекомендации @kocko должны исправить эту проблему. – npinti

+0

Что такое тип данных 'VAR' – silentprogrammer

ответ

6

(5/100) вернет 0, который будет отлит до double как 0.0.

Вобще:

double dis = (5d/100); 

Поскольку вы объявили VAR = 5, вы должны привести его к double, а затем сделать разделение:

double dis = ((double) VAR)/100; 
+0

Спасибо! Что я объявил 5 как окончательный статический int в коде? Я обновлю код. – sammy333

+0

Я обновил его. Что я могу сделать в этом случае? – sammy333

+0

@ sammy333, проверка моего обновления –

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