Почему fvalue1 123456792 после выполнения следующей строки кода?
float fvalue1 = Convert.ToSingle("123456789", CultureInfo.InvariantCulture);
Преобразование в удвоенные значения работает, как ожидается:
double dvalue1 = Convert.ToDouble("123456789", CultureInfo.InvariantCulture);