entonces mi codificación debería ser double total = Double.parseDouble (string) ;?
TinyBelly
44
@TinyBelly: sí, parece que quieres:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34
1
@TinyBelly: debe extraer la parte del texto de la cadena que desea analizar para el doble. Aquí hay una forma en que podría hacerlo para su caso, aunque no puedo garantizar que funcione para todo: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- esto básicamente reemplaza todos los caracteres que no son un número o .nada, dejando solo el número y el punto decimal para analizar.
WhiteFang34
44
No es aconsejable utilizar el doble para el cálculo de precios.
Bozho
2
Para aquellos atraídos aquí mientras buscan el resultado de la clase en Doublelugar del doubleuso de tipo primitivo Double.valueOf(String).
Pshemo
48
Si tiene problemas para analizar la cadena a valores decimales, debe reemplazar "," en el número a "."
String number ="123,321";double value =Double.parseDouble( number.replace(",","."));
No, String.valueOf (something) devuelve una representación de String de algo: si algo es un tipo incorporado o si es un Object y es nulo, de lo contrario es equivalente a someObject.toString (). Para obtener un Doble de una Cadena, uno debe hacerlo al revés, como se muestra en las otras respuestas (Double.valueOf (someString) devuelve un Double, y Double.parseDouble (someString) devuelve un double).
Johann Petrak
36
double d =Double.parseDouble(aString);
Esto debería convertir la cadena aString en el doble d.
Citando nuevamente la cita de Robertiano, porque esta es, con mucho, la versión adaptativa más versátil y de localización. Se merece una publicación completa!
Otra opción:
DecimalFormat df =newDecimalFormat();DecimalFormatSymbols sfs =newDecimalFormatSymbols();
sfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sfs);double d = df.parse(number).doubleValue();
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}
Por ejemplo, si ingresa la Cadena "4 55,63. 0", la salida será el número doble 45563.0
Usar Double.parseDouble()sin try/catchbloque circundante puede causar potencialNumberFormatException si la cadena doble de entrada no se ajusta a un formato válido.
Guava ofrece un método de utilidad para esto que regresa nullen caso de que su String no pueda analizarse.
"devuelve 0.0 en caso de que su String no se pueda analizar" - El Javadoc no admite esa afirmación.
Tom
@Tom Devuelve un valor nulo Tipo doble que se puede convertir a 0.0 tipo doble - DYS Hace 13 segundos editar
DYS
1
Puede, pero no automáticamente, y su fragmento no puede hacerlo.
Tom
1
Lo usé para convertir cualquier número de Cadena al doble cuando necesita int, solo convierta el tipo de datos de num y num2 a int; tomó todos los casos para cualquier cadena doble con Eng: "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;}
Respuestas:
Puedes usar
Double.parseDouble()
para convertir deString
a adouble
:Para su caso, parece que quiere:
fuente
double total = Double.parseDouble(jlbTotal.getText());
double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));
- esto básicamente reemplaza todos los caracteres que no son un número o.
nada, dejando solo el número y el punto decimal para analizar.Double
lugar deldouble
uso de tipo primitivoDouble.valueOf(String)
.Si tiene problemas para analizar la cadena a valores decimales, debe reemplazar "," en el número a "."
fuente
Para convertir una cadena de nuevo en un doble, intente lo siguiente
El método parseDouble logrará el efecto deseado, y también lo hará el método Double.valueOf ().
fuente
Esto debería convertir la cadena aString en el doble d.
fuente
Uso
new BigDecimal(string)
. Esto garantizará el cálculo adecuado más adelante.Como regla general, use siempre
BigDecimal
para cálculos sensibles como el dinero.Ejemplo:
fuente
Solo necesita analizar los valores de cadena usando Double
fuente
Citando nuevamente la cita de Robertiano, porque esta es, con mucho, la versión adaptativa más versátil y de localización. Se merece una publicación completa!
Otra opción:
fuente
fuente
También hay otra manera.
Double es una clase y "temp" es una variable. "número" es el número final que está buscando.
fuente
Esto es lo que haría
Por ejemplo, si ingresa la Cadena "4 55,63. 0", la salida será el número doble 45563.0
fuente
Usar
Double.parseDouble()
sintry/catch
bloque circundante puede causar potencialNumberFormatException
si la cadena doble de entrada no se ajusta a un formato válido.Guava ofrece un método de utilidad para esto que regresa
null
en caso de que su String no pueda analizarse.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);
En tiempo de ejecución, una entrada de cadena con formato incorrecto produce rendimientos
null
asignados avalueDouble
fuente
Lo usé para convertir cualquier número de Cadena al doble cuando necesita int, solo convierta el tipo de datos de num y num2 a int; tomó todos los casos para cualquier cadena doble con Eng: "Bader Qandeel"
fuente
fuente
Puede usar double.parseDouble ();
fuente