Я пытаюсь сосредоточиться на поведении с плавающей точкой (в C #).Я обратил внимание на проблему точности с плавающей запятой .Я хочу преобразовать строку с плавающей запятой в число с плавающей запятой, добавить + 1 к ней и преобразовать ее обратно в строку.Ввод может быть с (не более 5 десятичных разрядов) или без десятичных разрядов, каждый раз это отличается.Выходными данными должны быть снова полная нотация (без научной нотации, например: 2.017002E + 09F)
Кажется, что она работает правильно с десятичным преобразованием.
Любые предложения для получения наилучшей практики, чтобы получитьэто работает с поплавком?
var inputDecimalStr = "2017002005"; //2017002005.55 has the same result for the float conversion
float floatRegNr = 0;
float.TryParse(inputDecimalStr, out floatRegNr); // somehow this converts to 2.017002E+09
decimal test1 = decimal.Parse(inputDecimalStr); // this seems to work
float test2 = Convert.ToSingle(test1); // somehow this converts to 2.017002E+09
float test3 = Single.Parse(inputDecimalStr, NumberStyles.Float, CultureInfo.InvariantCulture);
float test4 = 2017002005F;
float test5 = 2.017002E+09F;
float test6 = 2.017002005E+09F;
double test7 = 234423.33D;
//this works ok
test5.ToString("0." + new string('#', 339));
test1.ToString();