Странное поведение в Eclipse - PullRequest
1 голос
/ 16 июня 2011

Мне может показаться невероятным, что я сейчас испытываю, но у меня есть этот код для других операций.

double mues1 = 0;
mues1 = (Math.pow((ab/100),2)*tam);

Где ab = 4, там = 400.

Это должно дать 0,64, но переменная остается равной 0,0, и она меняет свое значение, только если операция больше 1.

Если я заменю math.pow на ^ 2, переменная становится 800.0 независимо от того, какое значение имеет 'ab'.

Просто чтобы прояснить, я отлаживаю код, чтобы знать, каково значение.

Я перезапустил затмение и мой компьютер, и это не помогло.

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Это ab и int? Если это так, вам нужно изменить ab/100 на (double)ab/100 или ab/100.0. В противном случае он выполнит целочисленное деление, которое будет усечено до 0. Другими словами, 4/100 = 0.

2 голосов
/ 16 июня 2011

Проблема в том, что переменная ab является целым числом, и вы выполняете целочисленное деление .

Согласно целочисленному делению, 4/100 = 0. Чтобы получить результат 0.04, объявите ab как двойное число.

К вашему сведению, символ вставки в Java выполняет побитовый xor , так что вы, вероятно, не хотите его использовать.

0 голосов
/ 16 июня 2011

Вы страдаете от понижения значений типа float / double до целого числа, поэтому любые 0.nn усекаются до 0.

попробуйте это:

mues1 = (Math.pow(((double) ab / 100), 2) * (double) tam);

или просто объявите ab и tam как double

0 голосов
/ 16 июня 2011

Это происходит потому, что вы имеете дело с литералами типа int, значением 4/100 = 0. Вы должны попытаться сделать это, используя плавающие литералы 4.0/100.0.

Когда вы пытаетесь сделать 4^100, вы делаете «побитовое исключение или», как это означает ^ в Java. Это не делает то, что вы думаете, так что не делайте этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...