-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
  • 97,193
  • 102
  • 206
  • 364
petko_stankoski
  • 10,459
  • 41
  • 127
  • 231

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
  • 97,193
  • 102
  • 206
  • 364
4

Try this:

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

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

Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215