Você também pode usar um código de idioma específico usandoString.format(Locale.GERMAN, "%1$,.2f", myDouble);
Olivier Grégoire
13
Se houver mais de uma duplicação para formatar, use% 1,% 2 e assim por diante. Por exemplo String.format ( "% 1 $ ,. 2f, 2% $ ,. 2f", myDouble, adouble)
Moesio
4
Eu acredito que o "% 1 $" é opcional neste caso. Funciona para mim com apenas "%, 2f" como o formato String.
Matt Passell
5
Sim, Matt está certo. %1, %2e assim por diante podem ser usados para reordenar a saída com base no índice de seus argumentos de entrada. Veja isso . Você pode omitir o índice e a ordem padrão será assumida pelo formatador.
Praneetloke 14/05
1
Você deve dar uma explicação do significado das diferentes partes.
Mitulát Bati
41
String.format("%4.3f", x);
Isso significa que precisamos de um total de 4 dígitos em ans, dos quais 3 devem estar após o decimal. E f é o especificador de formato double. x significa a variável para a qual queremos encontrá-la. Trabalhou para mim. . .
Eu acho que isso significa que será a quarta variável nos argumentos a seguir e terá 3 casas após o decimal.
Michael Fulton
@MichaelFulton Não é tão fácil: String.format("%014.3f" , 58.656565)-> 0000000058,657: 14 símbolos no total: 8 zeros e 5 números e 1 vírgula. Portanto, nesse caso, número 14significa o número total de símbolos (os extras são substituídos pelo zero à esquerda, podem ficar sem, e substituem pelo espaço) na sequência de resultados . A .3parte é completamente independente aqui.
parsecer 5/03
No entanto aqui: String.format("%014.3f" , 58.656565)-> 58,657. Entendo porque a preferência vai para a .3fparte: primeiro imprime o número com 3 casas decimais e depois, se houver símbolos restantes , imprime espaços à esquerda (ou zeros / o que for). Nesse caso, o número é 2 + 3 + 1 = 6 símbolos e queríamos apenas imprimir 4, portanto, certamente não há espaços extras.
parsecer 5/03
24
Se você deseja formatá-lo com símbolos definidos manualmente, use o seguinte:
Resposta útil! No entanto, a última frase "A formatação baseada em localidade é preferida" não faz sentido sem o contexto. Existem casos de uso muito bons em que você NÃO deve usar a formatação com base no código do idioma, quando desejar gerar um formato específico da String. Por exemplo, você está implementando a exportação de seus dados para um arquivo externo e deseja ter controle total sobre o formato, não depende da localidade atual (ou qualquer).
3 (3) +3 00003
Formato de ponto flutuante padrão: 1234567,123000 Ponto
flutuante com vírgulas: 1.234.567,123000
Padrão de ponto
flutuante negativo : -1.234.567,123000 Opção de ponto flutuante negativo: (1.234.567, 123000)
Valores positivos e negativos de
alinhamento : 1.234.567,12
-1.234.567,12
String.format(Locale.GERMAN, "%1$,.2f", myDouble);
%1, %2
e assim por diante podem ser usados para reordenar a saída com base no índice de seus argumentos de entrada. Veja isso . Você pode omitir o índice e a ordem padrão será assumida pelo formatador.Isso significa que precisamos de um total de 4 dígitos em ans, dos quais 3 devem estar após o decimal. E f é o especificador de formato double. x significa a variável para a qual queremos encontrá-la. Trabalhou para mim. . .
fonte
String.format("%014.3f" , 58.656565)
->0000000058,657
: 14 símbolos no total: 8 zeros e 5 números e 1 vírgula. Portanto, nesse caso, número14
significa o número total de símbolos (os extras são substituídos pelo zero à esquerda, podem ficar sem, e substituem pelo espaço) na sequência de resultados . A.3
parte é completamente independente aqui.String.format("%014.3f" , 58.656565)
->58,657
. Entendo porque a preferência vai para a.3f
parte: primeiro imprime o número com 3 casas decimais e depois, se houver símbolos restantes , imprime espaços à esquerda (ou zeros / o que for). Nesse caso, o número é 2 + 3 + 1 = 6 símbolos e queríamos apenas imprimir 4, portanto, certamente não há espaços extras.Se você deseja formatá-lo com símbolos definidos manualmente, use o seguinte:
A formatação baseada em local é a preferida.
fonte
código extraído deste link ;
A saída deste exemplo mostra como o formato do mesmo número varia com o código de idioma:
fonte
E imprima:
fonte
Há muitas maneiras de fazer isso. Estes são dados abaixo:
Suponha que seu número original seja fornecido abaixo: número duplo = 2354548.235;
Usando
NumberFormat
e modo de arredondamentoUsando o formatador de String
Em todos os casos, a saída será: 2354548.24
Nota :
Durante o arredondamento, você pode adicionar
RoundingMode
seu formatador. Aqui estão alguns modos de arredondamento abaixo:Aqui estão as importações :
fonte
Usar
DecimalFormat
fonte