Ir para conteúdo

[Util] Formate seu dinheiro


ElGaubinho

Posts Recomendados

Como eu estou fazendo um plugin de economia, gostaria apenas de compartilhar a util que eu fiz para formatar o dinheiro (sei que já tem ao rodo esse tipo de negócio mas dane-se)
 

import java.text.DecimalFormat;

/**
 * Formata o valor inserido para uma string.
 * Ex: 1000000 = 1M = 1 Milhão
 * @author El Gaubinho
 *
 */
public class MoneyFormatter {
	private static DecimalFormat formatter = new DecimalFormat("#.##");

	/**
	 * Formata o valor de forma reduzida.
	 * @param value Valor que deseja formatar.
	 * @return Valor formatado (1202455 = 1,20 M)
	 */
	public static String formatShort(double value) {
		StringBuilder builder = new StringBuilder();
		if (value >= 1_000_000_000_000.0) builder.append(formatter.format(value / 1_000_000_000_000.0)).append(" T");
		else if (value >= 1_000_000_000.0) builder.append(formatter.format(value / 1_000_000_000.0)).append(" B");
		else if (value >= 1_000_000.0) builder.append(formatter.format(value / 1_000_000.0)).append(" M");
		else if (value >= 100_000.) builder.append(formatter.format(value / 100_000.0)).append(" KK");
		else if (value >= 1_000.0) builder.append(formatter.format(value / 1_000.0)).append(" K");
		return builder.toString();

	}

	/**
	 * Formata o valor de forma extendida.
	 * @param value Valor que deseja formatar.
	 * @return Valor formatado (1202455 = 1,20 Milhões)
	 */
	public static String formatLong(double value) {
		StringBuilder builder = new StringBuilder();
		if (value >= 1_000_000_000_000.0) builder.append(formatter.format(value /= 1_000_000_000_000.0))
				.append((value > 1 ? " Trilhões" : " Trilhão"));
		else if (value >= 1_000_000_000)
			builder.append(formatter.format(value /= 1_000_000_000)).append((value > 1 ? " Bilhões" : " Bilhão"));
		else if (value >= 1_000_000)
			builder.append(formatter.format(value /= 1_000_000)).append((value > 1 ? " Milhões" : " Milhão"));
		else if (value >= 10_000) builder.append(formatter.format(value /= 1_000)).append(" Mil");
		else builder.append(formatter.format(value));
		return builder.toString();

	}

}

Screenshot_1.png.48f147dbae42421fbbea61074438ced0.png Exemplo de uso (Bem ruim, eu sei KKK)

Screenshot_2.png.d7b77052a1af6967d7cf8c66964ade4c.png Resultado

Pronto! Agora você pode aplicar isso onde quiser, como por exemplo no seu hook com a PlaceHolderAPI u.u
Bjus a todos, espero que seja útil ❤️

Link para o comentário
Compartilhar em outros sites

  Em 08/04/2020 em 17:46, TheGeneX disse:

Legal, mas em vez de verificar número por número seria interessante verificar a length, seria mais fácil e compacto.

Expand  

mais fácil pegar e dividir por 1000 e puxar o index de um array que contenha as letras

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...