Вы анализируете как число с плавающей точкой, но конвертируете в число с плавающей точкой не точно, поэтому вы видите ошибку.
Ваш код должен быть:
double result = double.Parse(...);
а не:
double result = float.Parse(...);
Edit:
Примечание: когда вы конвертируете что-либо в строку, используйте value.ToString("R")
, если вы хотите, чтобы произошла передача в оба конца; это будет представлять точное значение в виде строки, а не усеченное значение.