Спецификатор формата 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
Поместите столько нулей, сколько необходимо в конце формата.
Ответ 3
Вы можете передать строку формата методу ToString, например:
ToString("N4"); // 4 decimal points Number
Если вы хотите увидеть больше модификаторов, посмотрите MSDN - Строки стандартного числового формата
Ответ 4
В С#, float
является псевдонимом для System.Single
(немного похожее на int
является псевдонимом для System.Int32
).