There are a lot of different ways to convert values.
You could try double.TryParse:
double val;
if (double.TryParse("12.0e-6", out val))
{
...
}
But...when I try your code, I get the right result. In fact, I get the same result regardless of what method I use.
double a = 12.0e-6;
double b = Convert.ToDouble("12.0e-6");
double c;
if (double.TryParse("12.0e-6", out c))
{
}
Console.WriteLine("{0}\n{1}\n{2}\nAll same? {3}", a, b, c, a == b && a == c);
Gives me:
1.2E-05
1.2E-05
1.2E-05
All same?True