Вопрос по java, math – Почему int exp1 = 14/20 * 100; равно "0" в Java?

0

Я пытаюсь сделать некоторую основную математику, и она продолжает появляться как0, Я уверен, что это связано с тем, чтоint но я не знаю, как обойти это. Мне нужно использовать целые числа, но математика, чтобы получить эти целые числа использует десятичные дроби. Как мне это сделать?

@duffymo не на языках со слабым шрифтом;) dtech
проблема в том, что я не знаю, что искать, чтобы узнать ... Joey John John
В самом деле? Опубликовать пример JavaScript. Я почти уверен, что два целых числа будут действовать таким образом, когда вы их делите. duffymo
Господи, не снова .... целочисленное деление работает таким образом на каждом языке. duffymo

Ваш Ответ

4   ответа
1

Вы можете изменить его на 14 * 100/20 - и тогда он даст то, что вы хотите.

То есть изменить последовательность операций (14/20 равно 0)

8

Это целочисленное деление.

Чтобы получить нецелые результаты, используйтеdoubleвместо.

-1

Ваш результат разыгрывается какintТаким образом, вы теряете точность.

Пытаться

double exp1 = 14/20.0*100;
Как мне затем разыграть двойник как int и округлить его? Joey John John
то есть. 0,65 * 10 = 6,5, но разыгрывается как int, поэтому округляется до 7 Joey John John
@JoeyJohnJohn Используйте математику # раунд:docs.oracle.com/javase/6/docs/api/java/lang/…, Мой оригинальный комментарий был, потому что оригинальный ответ14/20не14/20.0
Это все равно не будет работать, так как14/20 будет 0
3

Это не является особенным для BlackBerry, это стандартное поведение Java.

Это потому, что вы делаете целочисленную математику:

int subexpr1 = 14 / 20; // 0
int subexpr2 =  subexpr1 * 100; // 0

Вместо этого используйте двойной или измените порядок

int expr1 = (int) 14.0/20 * 100; // Very small possibility of rounding errors
int expr2 = 14 * 100 / 20; // Will ignore fraction parts

Похожие вопросы