Привет всем, я полный новичок, разрабатывающий приложение для Android, я читал "Sams Teach Yourself Java за 24 часа", и это отличная книга. Но я немного застрял, когда получаю значение десятичного числа только editTexts и использую java maths для определения моего конечного значения.
Спасибо за любую помощь. Удачного дня.
Нет. Вы можете написать свой собственный подкласс, который заставляет задуматься, что это то, что происходит, но в какой-то момент в цепочке вам нужно сделать преобразование из символьных/текстовых данных в числовые данные.
Да. Примитивные типы с плавающей запятой используют IEEE-754 для кодирования десятичных чисел в двоичном формате. Кодировка обеспечивает очень хорошую точность, но не является точной/не может точно представлять множество возможных чисел. Поэтому, если вы анализируете строку с примитивным типом с плавающей запятой, а затем снова возвращаетесь к строке, вы можете получить что-то, что отличается от вашей входной строки.
Двойной использует в два раза больше бит для кодирования числа как float и, таким образом, может поддерживать большую степень точности. Однако он не устранит проблемы, обсуждавшиеся в № 2. Если вы хотите удалить эти проблемы, подумайте о том, чтобы использовать что-то вроде BigDecimal
для представления ваших чисел вместо примитивных типов, таких как float
или double
.
Прочитайте все это как строку, split()
на символе '/', а затем сохраните каждую часть как целое число (или BigInteger
). Если вам нужно отобразить его как десятичное число, используйте BigDecimal
для выполнения деления.
Я хотел бы добавить, что если вы ищете альтернативу double
или float
, которая не влечет за собой потерю точности при преобразовании строк и числовой формы, посмотрите на них:
Стандартный java.math.BigDecimal
класс представляет собой произвольное масштабированное число точности; т.е. произвольное прецизионное целое число, умноженное (масштабированное) на фиксированную целую мощность 10.
Пакет Apache dfp
содержит реализации плавающих чисел с десятичной запятой.
Тем не менее, я бы сейчас избегал обоих этих тем и реализовал с помощью float
или double
. (Я полагаю, что ваша настоящая цель - научиться писать Java, а не создавать приложение для лучшего мира в мире).