Спецификатор формата float to String

У меня есть некоторые значения float, которые я хочу преобразовать в строку, я хочу, чтобы форматирование было одинаковым при преобразовании, т.е. 999.0000 (float) → 999.0000 (String). Моя проблема заключается в том, когда значения содержат произвольное количество нулей после десятичной точки, как в предыдущем примере, они удаляются при преобразовании в строку, поэтому на самом деле в итоге получается 999.

Я просмотрел спецификаторы формата для метода toString() на MSDN, спецификатор RoundTrip ('R') выглядит так, как будто он будет создавать то, что я хочу, но поддерживается только для переменных Single, Double и BigInt. Существует ли спецификатор формата для переменных float? Или было бы проще просто преобразовать значения в парные?

UPDATE: просто для ясности причина, по которой я хочу сохранить конечные нули, заключается в том, что я делаю сравнение десятичных знаков, то есть сравниваю количество цифр после десятичного знака между двумя значениями. Так, например, 1.00 и 1.00000 имеют разное количество цифр после десятичной точки. Я знаю, что это странная просьба, это для работы, и требование приходит с высокой.

ОБНОВЛЕНИЕ 2-3-11:

Я слишком сильно думал об этом, я читаю числа из txt файла и затем разбираю их как float, я собираюсь изменить программу, чтобы проверить, являются ли строковые значения десятичными или целыми числами. Извините за то, что потратил свое время, хотя это было очень проницательно.

Ответы

Ответ 1

Во-первых, как Этьен говорит, float в С# есть Single. Это ключевое слово С# для этого типа данных.

Итак, вы можете это сделать:

float f = 13.5f;
string s = f.ToString("R");

Во-вторых, вы ссылались пару раз на число "формат"; числа не имеют форматов, они имеют только значения. Строки имеют форматы. Что заставляет меня задуматься: что это за вещь, у которой есть формат, но не строка? Самая близкая вещь, о которой я могу думать, будет decimal, которая сохраняет свою собственную точность; однако при вызове просто decimal.ToString должен иметь эффект, который вы хотите в этом случае.

Как включить код примера, чтобы мы могли точно видеть, что вы делаете, и почему он не достигает того, чего вы хотите?

Ответ 2

Используйте ToString() в этом формате:

12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000

Поместите столько нулей, сколько необходимо в конце формата.

Ответ 4

В С#, float является псевдонимом для System.Single (немного похожее на int является псевдонимом для System.Int32).