Преобразование из текстового поля в числовое в Android - PullRequest
0 голосов
/ 01 октября 2009

Если у меня на экране есть компонент EditText, для которого я указал inputType="decimal" (то есть числовое / десятичное поле), как лучше всего преобразовать его в десятичное значение в коде приложения?

Numeric EditText

Google рекомендует избегать float с и избегать ненужного создания объектов (и я предполагаю, что любой код автоматической распаковки тоже плох), поэтому я принимаю это как свои ограничения. Я понимаю, что маленькое приложение, вероятно, не должно беспокоиться слишком сильно, но я не смог найти «оптимального» решения для этого.

Наиболее распространенное решение выглядит так:

double value = Double.parseDouble(txtInput);

Ответы [ 2 ]

3 голосов
/ 01 октября 2009

Это лучшее решение, вы также должны проверить исключения «NumberFormatException», только в случае недопустимых символов. Затем верните отзыв пользователю, если он неправильный.

Если вы не хотите плавать, вам придется взглянуть на артеметику с фиксированной точкой. Причина, по которой они хотят, чтобы вы избегали использовать float, заключается в том, что он редко применяется на процессорах телефона (вероятно, на руку) и должен быть реализован в программном обеспечении, которое работает медленно. Фиксированная точка обычно сопровождается аппаратно.

1 голос
/ 03 октября 2009

Причины, по которым Double.parseDouble является лучшим решением:

  • На обычном процессоре float операции выполняются аппаратными операциями. Скорее всего, это , а не , встроенный в мобильный ЦП, и будет заменен программными операциями (которые значительно медленнее).

  • Использование статических методов Double вместо создания экземпляра с помощью new Double(txtInput) лучше для использования памяти, поскольку это означает, что в JVM загружается только определение класса, и у нас никогда не возникает дополнительных издержек от информации о состоянии созданный экземпляром Double.

  • Альтернативой Double.parseDouble является Double.valueOf, но это возвращает экземпляр Double, и затем мы без необходимости создали объект, так как мы просто распаковываем его в double примитив.

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