Conversão de String para Double Asp.NET C# - Stack Overflow em Português
Preciso converter um valor de String (retornado pelo banco de dados) para Double mas quando vou fazer isso, ele simplesmente modifica o valor. Exemplo: o banco retorna 22.5, quando converto para Double em 225.0.
String val_serv = consultaserv[2].ToString();
Double buffer = Convert.ToDouble(val_serv);
totalserv = buffer + totalserv;
editada 17/03/14 às 19:46
rafasliderafaslide
Você pode usar a sobrecarga do método Convert.ToDouble que recebe um IFormatProvider como um parâmetro. Se for usado o Convert.ToDouble sem essa sobrecarga é utilizada a cultura na qual o programa esta rodando. Por isso que quando tu converte o valor 25.5 ele se transforma em 255, pois o "." é separador de centena, e não de decimal em algumas culturas (pt-BR sendo uma dessas).
Convert.ToDouble(val_serv, System.Globalization.CultureInfo.InvariantCulture)
Convert.ToDouble(val_serv, System.Globalization.CultureInfo.GetCultureInfo("pt-BR"));
Convert.ToDouble(val_serv, System.Globalization.CultureInfo.GetCultureInfo("en-US"));
respondida 17/03/14 às 19:54
double.Parse(consultaserv[2].ToString(), CultureInfo.InvariantCulture);
respondida 17/03/14 às 19:43
Você poderia explicar isso? Porque o original Convert.ToDouble está errado? Assim, todos podemos entender o problema. =D – Miguel Angelo 17/03/14 às 19:53
Não que esteja errado, mas que este Convert.ToDouble() não leva em consideração que a string possui um formato a ser lido. No caso do Parse, usa-se o InvariantCulture, que força o método a converter a string para o formato mais usado mundialmente. – Leonel Sanches da Silva 17/03/14 às 19:57