Formatação de Números 2 - Outra dúvida.....((((( JÁ SANADA!))))))))- oBRIGADO!

3 respostas
glaucioaorj

Boa tarde para todos....na Página 213 do livro "Java , Use a CABEÇA" há o seguinte exemplo didático:

format ("Tenho %,2f erros a corrigir." , 476578,09876) ;

Esta instrução tem como saída : "Tenho 476578,10 erros a corrigir". Pois bem, utilizei as seguintes instruções:

public class TestFormats {

	public static void main(String[] args) {

		
		String s1 = String.format("Tenho % ,2f erros a corrigir." , 476578,765);
		
		System.out.println(s1);

	}

}
A saída deveria ser "476578,77", ou seja, arredondar o número para 2 casas decimais

O "Eclipse" me forneceu o seguinte erro :

Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer
	at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
	at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
	at java.util.Formatter$FormatSpecifier.print(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.util.Formatter.format(Unknown Source)
	at java.lang.String.format(Unknown Source)
	at TestFormats.main(TestFormats.java:5)

Alguém poderia me ajudar ??? Obrigado ! :)

3 Respostas

A

Use o (.) como separador decimal

String s1 = String.format("Tenho %.2f erros a corrigir." , Float.parseFloat("476578.765"));

out.println(s1);
mario.fts

aff, essa versão parece que está com alguns erros de tradução.

public static void main(String[] args) throws ParseException { String s1 = String.format("Tenho %.2f erros a corrigir." , 476578.765); System.out.println(s1); }

Neste caso sim vc usa ponto na formatação. O ponto seguido de um número indica quantos digitos vc quer depois da virgula.

E no numero de entrada (476578.765) vc usa ponto como separador decimal. Usando virgula, o compilador vai pensar que vc está passando dois números no lugar de um só (476578 seria um, e 765 seria o outro), por isso que deu esse erro de conversão (f != java.lang.Integer ) já que ele tentou converter o 476578 (um número inteiro) para um número de ponto flutuante.

[]'s

glaucioaorj

Valew “mario.fts”…realmente a tradução da versão que estou estudando tá me dando dor de cabeça…Obrigado mais uma vez pela dica !!!

Abs :slight_smile: !!!

Criado 1 de fevereiro de 2010
Ultima resposta 1 de fev. de 2010
Respostas 3
Participantes 3