Formatação de inteiros grandes

As criptomoedas costumam usar muitas casas decimais; a Ethereum, por exemplo, usa 18. Ao lidar com dinheiro, converter um inteiro grande por meio de um tipo de ponto flutuante pode causar a perda de dígitos.

Escreva uma função que receba um BigInteger não negativo e a quantidade desejada de casas decimais. Retorne uma cadeia de caracteres com o ponto decimal inserido a essa quantidade de dígitos a partir da direita. Preserve todos os dígitos exatamente.

Exemplos

Program.formatBigInt(new BigInteger("1938908490185852058934"), 18) ⟞ "1938.908490185852058934"

Program.formatBigInt(new BigInteger("987654321987654321"), 6) ⟞ "987654321987.654321"

Program.formatBigInt(new BigInteger("13902183984901849081284"), 12) ⟞ "13902183984.901849081284"

Notas

  • Retorne uma cadeia de caracteres, não um valor de ponto flutuante.
  • Não faça a conversão por meio de um tipo de ponto flutuante.