Как сделать 100, деленное на 110 равным десятичному знаку в Java / Android - PullRequest
2 голосов
/ 17 августа 2010

Я пытаюсь использовать следующий код для получения десятичного числа, но оценка l, деленная на h (от низкого к высокому), всегда равна 0.

Как я могу это исправить? Спасибо!

EditText marketValLow = (EditText) findViewById(R.id.marketValLow);
            EditText marketValHigh = (EditText) findViewById(R.id.marketValHigh);
            String valLow = marketValLow.getText().toString();
            String valHigh = marketValHigh.getText().toString();
            int l = Integer.parseInt(valLow);
            int h = Integer.parseInt(valHigh);

            if (valLow.trim().equals("") || valHigh.trim().equals("")) {

                Toast.makeText(CurrentMarketValue.this, "You need to enter a high AND low." + valLowIndex, Toast.LENGTH_SHORT).show();

            } else if ((l / h) < .9) { 

                Toast.makeText(CurrentMarketValue.this, "The range between your value cannot be more than 10%." + (l / h), Toast.LENGTH_SHORT).show();

            }

Ответы [ 7 ]

9 голосов
/ 17 августа 2010

(int / int) приведет к int.

Вместо этого выполните: double result = ((double)l) / ((double) h); и вместо проверки (l / h) вместо этого выполните проверку result.

4 голосов
/ 17 августа 2010

Вы делаете целочисленное деление . Заставить один из операндов / быть двойным.

((double)l / h)
4 голосов
/ 17 августа 2010
double val = ((double)l)/h
2 голосов
/ 17 августа 2010

В отличие от всех других ответов:

if ((l * 10) < (h * 9))

Не сказать, что это лучше (на самом деле, если l или h может быть больше 200 миллионов, это плохо), просто другое.

2 голосов
/ 17 августа 2010

это базовая часть многих языков типов.Целочисленное деление показывает результаты целых делений.В вашем случае вы могли бы сделать это 1,0 / ч или набрать одно из чисел, чтобы плавать или удвоить.

1 голос
/ 17 августа 2010

Я думаю, что JeremyP прав.TomTom, почему вы говорите, что это неправильно?Следующее является эквивалентным по свойствам неравенств (умножая обе стороны на одну и ту же положительную величину ... при условии h> = 0):

(l / h) < .9
l < (.9 * h)
(l * 10) < (h * 9)

Последний также обладает хорошим свойством не создавать исключениекогда h = 0.

1 голос
/ 17 августа 2010

Может показаться, что вы используете целое число, где лучше использовать float или double.

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