Arquivado [Ajuda] Formatar double (1k, 1M, 1B)

Discussão em 'Arquivados' iniciado por WizardlyBump17, 11 Março 2019.

  1. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    695
    Sexo:
    Masculino
    Avaliações:
    +209 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Eu tenho um double, o double é 1000000000000000 (1 quatrilhão) e quero formatar para: 1Q.
    Como se faz isso?
    --- Post duplo mesclado, 11 Março 2019, Data da postagem original 11 Março 2019 ---
    Opa, depois de uma longa pesquisa no google encontrei a resposta e vou deixar ela aqui caso alguem precise
    Código (Forge Crash):


    private static final Pattern REGEX = Pattern.compile("(\\d+(?:\\.\\d+)?)([KMG]?)");
       private static final String[] KMG = new String[] {"", "K", "M", "B", "T", "Q", "QT", "S", "SP", "OC", "N", "D", "UN", "DC", "TR", "QD", "QC", "SD", "SPT", "OCT", "ND", "VG"}; //De onde você tirou essas letras dps de TR wizardly? Eu respondo: https://br.answers.yahoo.com/question/index?qid=20100131121908AAZjPJI e https://brainly.com.br/tarefa/11806798

    static String formatDbl(double d) {
          int i = 0;
          while (d >= 1000) { i++; d /= 1000; }
          return d + KMG[i];
       }

       static double parseDbl(String s) {
          final Matcher m = REGEX.matcher(s);
          if (!m.matches()) throw new RuntimeException("Invalid number format " + s);
          int i = 0;
          long scale = 1;
          while (!m.group(2).equals(KMG[i])) { i++; scale *= 1000; }
          return Double.parseDouble(m.group(1)) * scale;
       }
     
     

Compartilhe esta Página