publicclassMainclass{publicstaticvoidmain(Stringargs[]){Doubled=Double.parseDouble("-34.7");// para en_USDoubled=Double.parseDouble("-34,7");// para pt_BR [ VIRGULA ] System.out.println(d);}}
C
coffee_break_mao
Tem um meio prático de checar o idioma do ambiente em tempo de execução?
Mais um detalhe: Quando a String possui ponto, ela é convertida sem problema para Double, mas quando ela possui ponto e o sinal de negativo, ocorre um erro. Logo não se trata de um problema de ponto ou vírgula, mas sim do sinal de negativo no começo da String…
E agora?
Alguma sugestão?
Obrigado pela ajuda!
sudeval
aqui nao deu nenhum erro relacionado ao - .
Ricardo_Siqueira
Tentei aqui e converteu certo também.
Fabricio_Cozer_Marti
scottys0:
presta atencao no idioma do teu ambiente.
publicclassMainclass{publicstaticvoidmain(Stringargs[]){Doubled=Double.parseDouble("-34.7");// para en_USDoubled=Double.parseDouble("-34,7");// para pt_BR [ VIRGULA ] System.out.println(d);}}
só corrigindo, o Double.parseDouble("-34.7"); retorna um double primitivo.
E o erro que pode dar aí poderia ser de vírgula ou ponto, a depender da localidade, que você pode obter chamando Locale.getDefault();
Ricardo_Siqueira
aliás você não estaria tentando colocar isso num double não né…se não vai dar erro mesmo né =/
Matheus_Tardivo
Exemplo:
classTestDouble{publicstaticvoidmain(String[]args){Doubled1=Double.valueOf("-34.7");// objeto Doubledoubled2=Double.parseDouble("-34.7");// primitivo double// funciona somente jdk >= 1.5; "autoboxing"// no jdk <= 1.4: error "incompatible types"Doubled3=Double.parseDouble("-34.7");System.out.println(d1+"\n"+d2+"\n"+d3);}}
A compilação e saida:
// testando para java 1.4>javac-source1.4TestDouble.javaTestDouble.java:10:incompatibletypesfound:doublerequired:java.lang.DoubleDoubled3=Double.parseDouble("-34.7");^1error// agora com java 1.5>javacTestDouble.java>javaTestDouble-34.7-34.7-34.7