Variavel para trabalhar com DINHEIRO

Como fazer para trabalhar com dinheiro, melhor variavel?

<script>
		function mascara(o, f) {
			v_obj = o;
			v_fun = f;
			setTimeout("execmascara()", 1);
		}

		function execmascara() {
			v_obj.value = v_fun(v_obj.value);
		}

		function valor(v) {
			v = v.replace(/\D/g, "");
			v = v.replace(/[0-9]{15}/, "invalido");
			v = v.replace(/(\d{1})(\d{11})$/, "$1.$2"); // coloca ponto antes dos
			// últimos 11 digitos
			v = v.replace(/(\d{1})(\d{8})$/, "$1.$2"); // coloca ponto antes dos
			// últimos 8 digitos
			v = v.replace(/(\d{1})(\d{5})$/, "$1.$2"); // coloca ponto antes dos
			// últimos 5 digitos
			v = v.replace(/(\d{1})(\d{1,2})$/, "$1,$2"); // coloca virgula antes dos
			// últimos 2 digitos
			return v;
		}
	</script>
<p:inputText id="custoUni" value="#{mbProduto.precoCusto}"
								onkeypress="mascara(this, valor);" />

esse script é muito bom, com forme vc vai digitando, ele vai coloca a virgula e cadas 3 numero um ponto
1,00
1.000,00
1.000.000,00

agora em q tipo de variavel armazena isso? e deixar disponível para efetuar futuras somas…

BigDecimal

como tirar o a virgula tipo

1.000,00

?

Olá.

Existem duas maneiras de fazer isso, a primeira é manipulando no Front-End, mas não faz sentido mudar uma máscara que tem um propósito.
A segunda é fazer um pequeno parse no Back-End como nesse tópico.

DecimalFormat formater = new DecimalFormat ("#,###.##");
formater.setParseBigDecimal(true);
BigDecimal numberConverted = (BigDecimal) formater.parse(valor);

TDD:

	@Test
	public void convertStringToBigDecimal() throws ParseException{

		String valor = "123.000,10";
		BigDecimal expect = new BigDecimal(123000.10).setScale(2, BigDecimal.ROUND_FLOOR);
		
		DecimalFormat formater = new DecimalFormat ("#,###.##");
		formater.setParseBigDecimal(true);
		BigDecimal numberConverted = (BigDecimal) formater.parse(valor);
		
		Assert.assertEquals(expect, numberConverted);
	}