-2

I want to convert string like ".1", ".2", etc into 0.1, 0.2 etc.

I tried:

Convert.ToDouble(".1")

and it crashes. I understand why it crashes, but I still need to convert it to valid double number. I know I can do this with splitting string and parsing but is there a better way?

Soner Gönül
  • 94,086
  • 102
  • 195
  • 339
petko_stankoski
  • 10,079
  • 40
  • 123
  • 222

2 Answers2

5

Convert.ToDouble uses current culture settings by default.

Probably your current culture has different string than . as a NumberDecimalSeparator.

As a solution, you can use a culture that already has . as a NumberDecimalSeparator like InvariantCulture, or your can Clone your CurrentCulture, set it's NumberDecimalSeparator to . and use that cloned culture in your Convert.ToDouble method (or double.Parse) as a second parameter.

var d = double.Parse(".1", CultureInfo.InvariantCulture);

or

var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.NumberDecimalSeparator = ".";
var d = double.Parse(".1", clone);
Soner Gönül
  • 94,086
  • 102
  • 195
  • 339
4

Try this:

  Double result = Double.Parse(".1", CultureInfo.InvariantCulture);

by specifing CultureInfo.InvariantCulture you ensure . to be a decimal separator.

Dmitry Bychenko
  • 165,109
  • 17
  • 150
  • 199