Эти три ответа в основном просто дублируют ответы с наибольшим количеством голосов, опубликованные несколькими годами ранее, и, безусловно, имеют много положительных отзывов.
поэтому мой код должен быть double total = Double.parseDouble (string) ;?
TinyBelly
4
@TinyBelly: да, похоже, что вы хотите:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34
1
@TinyBelly: вам нужно извлечь часть текста из строки, которую вы хотите проанализировать для двойного. Вот один способ, которым вы могли бы сделать это для своего случая, хотя я не могу гарантировать, что это будет работать для всего: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- это в основном заменяет все символы, которые не являются числом или .ничем, оставляя только число и десятичную точку для анализа.
WhiteFang34
4
использование double для расчета цены не рекомендуется.
Божо
2
Для тех , кто заманил сюда в поисках результата класса Doubleвместо примитивного типа doubleиспользования Double.valueOf(String).
Пшемо
48
Если у вас возникли проблемы с разбором строки в десятичные значения, вам необходимо заменить "," в числе на "."
String number ="123,321";double value =Double.parseDouble( number.replace(",","."));
Нет, String.valueOf (что-то) возвращает строковое представление чего-либо: если что-то является встроенным типом или если это Object, и оно имеет значение null, в противном случае это эквивалентно someObject.toString (). Чтобы получить Double из String, нужно сделать это наоборот, как показано в других ответах (Double.valueOf (someString) возвращает Double, а Double.parseDouble (someString) возвращает double).
Иоганн Петрак
36
double d =Double.parseDouble(aString);
Это должно преобразовать строку aString в двойной d.
publicstaticdouble convertToDouble(String temp){String a = temp;//replace all commas if present with no commaString s = a.replaceAll(",","").trim();// if there are any empty spaces also take it out. String f = s.replaceAll(" ","");//now convert the string to doubledouble result =Double.parseDouble(f);return result;// return the result}
Например, вы вводите строку «4 55,63. 0», в результате получается двойное число 45563,0.
Использование Double.parseDouble()без окружающего try/catchблока может привести к тому, что потенциальная NumberFormatExceptionдвойная строка не соответствует допустимому формату.
Guava предлагает для этого служебный метод, который возвращается, nullесли ваша строка не может быть проанализирована.
«возвращает 0.0, если ваша строка не может быть проанализирована» - Javadoc не поддерживает это утверждение.
Том
@Tom Возвращает нулевое значение типа Double, который можно преобразовать в тип double с двойным типом - DYS, 13 с. Назад edit
DYS,
1
Это возможно, но не автоматически, и ваш фрагмент не может этого сделать.
Том
1
Используйте это для преобразования любого числа String в удвоенное значение, когда вам нужно int, просто преобразуйте тип данных из num и num2 в int; взял все случаи для любой двойной строки с англ: "Bader Qandeel"
publicstaticdouble str2doubel(String str){double num =0;double num2 =0;int idForDot = str.indexOf('.');boolean isNeg =false;String st;int start =0;int end = str.length();if(idForDot !=-1){
st = str.substring(0, idForDot);for(int i = str.length()-1; i >= idForDot +1; i--){
num2 =(num2 + str.charAt(i)-'0')/10;}}else{
st = str;}if(st.charAt(0)=='-'){
isNeg =true;
start++;}elseif(st.charAt(0)=='+'){
start++;}for(int i = start; i < st.length(); i++){if(st.charAt(i)==','){continue;}
num *=10;
num += st.charAt(i)-'0';}
num = num + num2;if(isNeg){
num =-1* num;}return num;}
Ответы:
Вы можете использовать
Double.parseDouble()
для преобразованияString
вdouble
:Для вашего случая это выглядит так, как вы хотите:
источник
double total = Double.parseDouble(jlbTotal.getText());
double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));
- это в основном заменяет все символы, которые не являются числом или.
ничем, оставляя только число и десятичную точку для анализа.Double
вместо примитивного типаdouble
использованияDouble.valueOf(String)
.Если у вас возникли проблемы с разбором строки в десятичные значения, вам необходимо заменить "," в числе на "."
источник
Чтобы преобразовать строку обратно в двойной, попробуйте следующее
Метод parseDouble достигнет желаемого эффекта, как и метод Double.valueOf ().
источник
Это должно преобразовать строку aString в двойной d.
источник
Использование
new BigDecimal(string)
. Это будет гарантировать правильный расчет позже.Как правило - всегда используйте
BigDecimal
для чувствительных расчетов, как деньги.Пример:
источник
Вам нужно только разобрать строковые значения, используя Double
источник
Снова цитирую цитату из Робертиано - потому что это, безусловно, самая универсальная и адаптивная к локализации версия. Это заслуживает полного поста!
Другой вариант:
источник
источник
Есть и другой способ.
Double - это класс, а "temp" - это переменная. «номер» - это последний номер, который вы ищете.
источник
Это то, что я бы сделал
Например, вы вводите строку «4 55,63. 0», в результате получается двойное число 45563,0.
источник
Использование
Double.parseDouble()
без окружающегоtry/catch
блока может привести к тому, что потенциальнаяNumberFormatException
двойная строка не соответствует допустимому формату.Guava предлагает для этого служебный метод, который возвращается,
null
если ваша строка не может быть проанализирована.https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitives/Doubles.html#tryParse(java.lang.String)
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Во время исполнения, уродливый ввод строки Урожайность
null
присваиваетсяvalueDouble
источник
Используйте это для преобразования любого числа String в удвоенное значение, когда вам нужно int, просто преобразуйте тип данных из num и num2 в int; взял все случаи для любой двойной строки с англ: "Bader Qandeel"
источник
источник
Вы можете использовать double.parseDouble ();
источник