Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eddy Goulart

Tipo Double separado com .(ponto) as casas decimais

Recommended Posts

Olá

Estou ultilizando o tipo double para trabalhar os meus campos numéricos. Oque está me surpreendedo é como eu declaro o numero e como ele me retorna, por exemplo:

string valor = "1.500,30";//declara variavel
valor = valor.Replace(".","");//troca (ponto) por vazio
valor = valor.Replace(",",".");//troca (virgula) por (ponto)

return Convert.ToDouble(valor); //deveria me retornar 1500.30

Bom, esse retorno está me retornando assim 1500,30

quero que me retorne assim 1500.30

Achei muito estranho pois quando declaramos variaveis do tipo double, sempre declaramos separado por pontos e pelo que percebi ele retorna com virgula, estranho, oque fazer?

 

obs: Precisa ser com ponto pois o BD só aceita separado com ponto, pelo que sei..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Eddy, tenta assim:

 

string valor = "1.500,30";//declara variavel
double res = Convert.ToDouble(valor); //deveria me retornar 1500.30

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara se você remover virgula e pronto e der um convert ele sempre vai te retornar com virgulas mesmo.

Agora se você precisa de um valor com pronto, pq não faz apenas um replace?

string valor = "1.500,30";//declara variavel
string r = valor.Replace(".", "").Replace(",", ".");
Ou você pode mudar a coluna do BD pra decimal ou número

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ivan, tenho um metodo genérico que uso no projeto todo, meu double tem que retornar com pontos separando as casas decimais sacou? será se usar um format não soluciona isso? alguem pode me ajudar como formatar um tipo double para retorna com pontos separando as casas decimais? :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

segue abaixo um exemplo:

string a = "1.500,20";
	double d = Convert.ToDouble(a);
	Response.Write(d.ToString("N2"));

espero que ajude.

 

Abraço e sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

QuiteLab, bom cara, eu preciso converter para double pois meu projeto está todo assim, então preciso fazer do meu jeito.. mais obrigado..

 

yslladd o valor retornado pelo seu codigo é o mesmo que está na string

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas este é o processo pra gravar no banco de dados? Ou para continuar utilizando a variável no código.

Este processo do replace só é feito no último momento quando se vai gravar no banco, por mais que no banco esteja decimal pode passar uma variável string do c# que não dará problema.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo! Você precisa que o double retornado esteja no formato numerico americano? Ex: 1,500.20

 

Se for isso você precisará alterar as configurações regionais na sua aplicação, para que ela retorne numeros no formato americano.

 

Testei o seguinte codigo aqui:

string valor = "1.500,25";
	//Converto o numero para double, mas ainda no formato pt-BR
		double numero = Convert.ToDouble(valor);
		
		//Mudo a configuração regional para o formato americano
		Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
		Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
		
		//Converto o retorno novamente para double, que agora adquire o formato americano
		return Convert.ToDouble(numero);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah! esqueci de avisar...

 

Você deve adicionar dois namespaces que englobam esses novos comandos

 

          using System.Globalization; //Para as alterações de Cultura
          using System.Threading; //Para controle das Threads

Se necessário depois retorne o CultureInfo para "pt-BR" garantindo que o resto da aplicação não fique no formato americano.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.