Converter uma valor para padrão aceitável no mySql

02/04/2018

0

Como vão desenvolvedores? estou com um probleminha em uma pequena aplicação que estou tentando encerrar.
Tenho um campo formatado, onde recebo um valor no formato 1.234,12.
Quero salvar esse valor no banco mysql, porem todos sabemos que o padrão aceito é 1234.12, aí que esta a minha dificuldade.
estou usando o seguinte codigo para transformar ele, coisa muito loca que fiz:

private double convertValorInfo(String valor_entrada) {
// transfroma em vetor
IntStream s = valor_entrada.chars();
double valor = 0;

// verifica a qtd de posiçoes... indica numeros com casas de milhares
if (s.count() > 6) {
String n = valor_entrada.replace(".", "");
String b = n.replace(",", ".");

valor = Double.parseDouble(b);
// System.out.println(valor);

} else {

// valores com casas abaixo de milhares
String n = valor_entrada.replace(",", ".");
valor = Double.parseDouble(n);
// System.out.println(n);
}

return valor;
}

Já tentei formatar usando a classe DecimalFormat, mas não consegui.
Jederson Santana

Jederson Santana

Responder

Post mais votado

10/04/2018

Cara, pesquisando na net, encontrei isso. Vê se e ajuda.

function convertCoin($xCoin = "EN", $xDecimal = 2, $xValue) {
   $xValue       = preg_replace( '/[^0-9]/', '', $xValue); // Deixa apenas números
   $xNewValue    = substr($xValue, 0, -$xDecimal); // Separando número para adição do ponto separador de decimais
   $xNewValue    = ($xDecimal > 0) ? $xNewValue.".".substr($xValue, strlen($xNewValue), strlen($xValue)) : $xValue;
   return $xCoin == "EN" ? number_format($xNewValue, $xDecimal, '.', '') : ($xCoin == "BR" ? number_format($xNewValue, $xDecimal, ',', '.') : NULL);
}


Daí você faz:

$xValue = "12345678"; // Podendo ser "R$ 123.456,78" ou somente "123.456,78" ou "123456,78" ou "123.45678"

convertCoin("EN",0,$xValue); // 12345678
convertCoin("EN",1,$xValue); // 1234567.8
convertCoin("EN",2,$xValue); // 123456.78
convertCoin("EN",3,$xValue); // 12345.678

convertCoin("BR",0,$xValue); // 12.345.678
convertCoin("BR",1,$xValue); // 11.234.567,8
convertCoin("BR",2,$xValue); // 123.456,78
convertCoin("BR",3,$xValue); // 12.345,678


Ilano Frota

Ilano Frota
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar