Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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

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

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


  • сколько цифр после запятой? если вы хотите сохранить эту динамику, предполагая, что значение является правильным float, используйте .ToString(G) 01.02.2011
  • Цифры будут разными, для простоты я бы сказал, что диапазон цифр после запятой может быть где-то между 1 и 5. 01.02.2011
  • .ToString(G) лучше всего подходит для переменного диапазона 01.02.2011
  • Пробовал спецификатор G, но когда встречается число, подобное 999,0, он возвращает 999. Я хочу сохранить конечные нули, как строку, я хочу, чтобы она была 999,0 01.02.2011
  • kingrichard2005, нет разницы между 999.0000 и 999.0 для типа float/System.Single (они одинаковые); это только значения, совершенно не обращающие внимания на форматирование. Откуда это 999.0000? Где вы это видите? 01.02.2011
  • Если вам нужна строка, как она есть в текстовом файле, и вам не нужно фактическое значение для каких-либо вычислений, почему бы вам просто не прочитать значения как строки и вообще не анализировать их на числа с плавающей запятой? Если вам нужны значения, проанализируйте их, но сохраните исходную строку. В любом случае, вы можете посмотреть мой пост для более простого форматирования чисел с параметрами формата для метода ToString(). 17.05.2012

Ответы:


1

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

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

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

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

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

01.02.2011
  • Небольшое примечание: в научных областях принято различать 1.01e5 и 1.0100e5, поскольку количество завершающих нулей влияет на количество значащих цифр, которое выражает точность измерения. 06.07.2015

  • 2

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

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

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

    01.02.2011
  • Привет Алиостад, проблема с этим, я хочу, чтобы строка была отформатирована точно так же, как отформатировано число. Для вашего второго примера я бы хотел, чтобы это было 12345.0 в виде строки, а не 12345.0000. 01.02.2011
  • @ kingrichard2005- какая информация говорит вам, является ли число с плавающей запятой 12345.0 или 12345.0000? Они будут эквивалентны поплавкам. 02.02.2011
  • Я читаю эти файлы из текстового файла. Возможно, лучшим вариантом было бы определить, является ли число, прочитанное в виде строки, десятичным числом или нет. 04.02.2011
  • Проблема в том, что это ограничивает точность. 09.01.2015

  • 3

    Вы можете передать строку формата в метод ToString, например:

    ToString("N4"); // 4 decimal points Number
    

    Если вы хотите увидеть больше модификаторов, взгляните на MSDN — строки стандартного числового формата< /а>

    17.05.2012

    4

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

    01.02.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование