Wednesday, 25 October 2017

Printf Format Codes Binary Options


Formatando saída de impressão numérica Anteriormente você viu o uso dos métodos de impressão e println para imprimir seqüências de caracteres para saída padrão (System. out). Como todos os números podem ser convertidos em strings (como você verá mais adiante nesta lição), você pode usar esses métodos para imprimir uma mistura arbitrária de strings e números. A linguagem de programação Java tem outros métodos, entretanto, que permitem que você exerça muito mais controle sobre sua saída de impressão quando os números são incluídos. Os métodos printf e format O pacote java. io inclui uma classe PrintStream que possui dois métodos de formatação que você pode usar para substituir print e println. Estes métodos, formato e printf. São equivalentes entre si. O System. out familiar que você está usando acontece para ser um objeto PrintStream, para que você possa invocar métodos PrintStream em System. out. Assim, você pode usar formato ou printf em qualquer lugar em seu código onde você já estava usando print ou println. Por exemplo, a sintaxe para esses dois métodos java. io. PrintStream é a mesma: onde format é uma string que especifica a formatação a ser usada e args é uma lista das variáveis ​​a serem impressas usando essa formatação. Um exemplo simples seria O primeiro parâmetro, formato. É uma string de formato especificando como os objetos no segundo parâmetro, args. Devem ser formatados. A seqüência de caracteres formato contém texto sem formatação, bem como especificadores de formato. Que são caracteres especiais que formatam os argumentos de Object. Args. (A notação Object. Args é chamada varargs., O que significa que o número de argumentos pode variar.) Especificadores de formato começam com um sinal de porcentagem () e terminam com um conversor. O conversor é um caractere que indica o tipo de argumento a ser formatado. Entre o sinal de porcentagem () eo conversor você pode ter sinalizadores e especificadores opcionais. Há muitos conversores, sinalizadores e especificadores, que estão documentados em java. util. Formatter Aqui está um exemplo básico: O d especifica que a única variável é um inteiro decimal. O n é um personagem de nova linha independente da plataforma. A saída é: Os métodos printf e format estão sobrecarregados. Cada um tem uma versão com a seguinte sintaxe: Para imprimir números no sistema francês (onde uma vírgula é usada no lugar da casa decimal na representação em inglês de números de ponto flutuante), por exemplo, você usaria: Um exemplo A tabela a seguir Lista alguns dos conversores e sinalizadores que são usados ​​no programa de exemplo, TestFormat. java. Que segue a tabela. Conversores e Sinalizadores Usados ​​em TestFormat. java Dez caracteres de largura, justificados à direita, com três lugares após o ponto decimal. O seguinte programa mostra alguns da formatação que você pode fazer com formato. A saída é mostrada entre aspas duplas no comentário incorporado: Nota: A discussão nesta seção abrange apenas os conceitos básicos do formato e métodos printf. Mais detalhes podem ser encontrados na seção E / S Básica do caminho Essencial, na página Formatação. Usar String. format para criar seqüências de caracteres é coberto em Strings. A classe DecimalFormat Você pode usar a classe java. text. DecimalFormat para controlar a exibição de zeros, prefixos e sufixos iniciais e posteriores, agrupamento (milhares) de separadores eo separador decimal. DecimalFormat oferece uma grande flexibilidade na formatação de números, mas pode tornar seu código mais complexo. O exemplo a seguir cria um objeto DecimalFormat, myFormatter. Passando uma seqüência de padrão para o DecimalFormat construtor. O método format (), que DecimalFormat herda de NumberFormat. É então invocado pelo myFormatter 151it aceita um valor duplo como um argumento e retorna o número formatado em uma string: Aqui está um programa de exemplo que ilustra o uso de DecimalFormat: A tabela a seguir explica cada linha de output. O comando printf Stranger, Um tópico muito grande que precisa de experiência - por favor, preencha as informações que faltam, estenda as descrições e corrija os detalhes se você puder Atenção: Este é sobre o comando printbbash-embutido - no entanto, a descrição deve ser quase idêntica para um comando externo que Segue POSIX. GNU Awk espera uma vírgula após a seqüência de caracteres de formato e entre cada um dos argumentos de um comando printf. Para obter exemplos, consulte: snippet de código. Ao contrário de outras documentações, eu não quero redirecioná-lo para a página de manual para a família de funções printf () C. No entanto, se you039re mais experientes, que deve ser a descrição mais detalhada para o formato seqüências de caracteres e modificadores. Devido a implementações históricas conflitantes do comando echo, o POSIX recomenda que o printf seja preferido ao echo. O comando printf fornece um método para imprimir texto pré-formatado semelhante à interface do sistema printf () (função C). It039s significou como sucessor de eco e tem muito mais recursos e possibilidades. Além de outras razões, POSIX tem um argumento muito bom para recomendá-lo: Ambos os principais sabores históricos do comando echo são exclusivos mútuos, eles colidem. Um comando quotnewquot tinha que ser inventado para resolver o problema. O formato de texto é fornecido em ltFORMATgt. Enquanto todos os argumentos que o formatstring pode apontar são dados depois disso, aqui, indicado por ltARGUMENTSgt. Assim, um típico printf - call se parece com: onde quotSome: snName: snquot é a especificação de formato e as duas variáveis ​​são passadas como argumentos, o s nos formatostring aponta para (para cada especificador de formato que você dá, printf aguarda um argumento) . Se for dada, a saída é atribuída à variável VAR em vez de impressa para stdout (comparável a sprintf () de alguma forma). A opção - v não pode atribuir diretamente aos índices de matriz em versões anteriores ao Bash 4.1. Em versões mais recentes do que 4.1, deve-se ter cuidado ao executar expansões no primeiro argumento não-opção do printf, pois isso abre a possibilidade de uma vulnerabilidade de injeção de código fácil. Onde o eco pode, obviamente, ser substituído por qualquer comando arbitrário. Se for necessário, especifique uma seqüência de caracteres de codificação rígida ou use - para assinalar o fim das opções. Exatamente o mesmo problema também se aplica a leitura. E um semelhante ao mapfile. Embora realizar expansões em seus argumentos é menos comum. É claro que no shell, o que significa que os argumentos são apenas seqüências de caracteres, no entanto, as notações comuns C mais algumas adições para as constantes de número são reconhecidos para dar um número argumento para printf. printf e scanf número de códigos de formato com até seis dígitos de precisão , Notação científica Nota de rodapé: Em printf (), as promoções de tipo de expressão são esperadas - em uma expressão, char e short são convertidos em int, eo float é convertido em duplo. Assim c corresponde realmente a um parâmetro de tipo int e f e g correspondem realmente a parâmetros do tipo double. Assim, em printf () não há diferença entre f e lf, ou entre g e lg. No entanto, em scanf () o que é passado é um ponteiro para a variável para que nenhum tipo de promoções ocorram ou são esperados. Assim f e lf são bastante diferentes em scanf, mas o mesmo em printf. Pessoalmente, eu costumava usar lg rotineiramente para duplos em printf e scanf, mas isso está fora de favor nos dias de hoje e de fato gcc lhe dará uma mensagem de aviso para usar lg em printf. O procedimento usual nestes dias é usar g para o dobro em printf e lg para duplo em scanf. Não importa o que você usa para printf porque a função de biblioteca printf trata-los como sinônimos, mas é crucial para obtê-lo direito para scanf. Printf modificadores de formato Modificadores aparecem entre a e a letra-chave. Um número é uma largura de campo. E um número é uma precisão Exemplo: printf (6.3f, 2.8) rende 2.800 (com um espaço antes do 2) Note que esse 6 inclui as 3 casas decimais eo 1. - 6 caracteres no total. Assim, 6-3-1 2 caracteres à esquerda do ponto decimal. 0 (o dígito zero) significa pad com zeros à largura do campo (usualmente usado apenas com inteiros) l (a letra) significa longo, e. Ld para formatar um int longo em decimal Exemplo de 0: 2. 3 (um espaço entre. E 3) Em 02d, o 0 não faz parte da largura do campo. É um caractere de modificador. E quando você tem uma largura de campo, você deve escrevê-lo de tal forma que ele não começa com um zero (e, em seguida, você pode anteceder um zero como um caractere de modificador se você quiser isso).

No comments:

Post a Comment