Предложите хороший метод получения числа с высокой точностью на C#

StackOverflow https://stackoverflow.com/questions/1668870

  •  13-09-2019
  •  | 
  •  

Вопрос

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

У меня есть начальная конфигурация, которая состоит из двух чисел R и X0, R = 3,9988 и X0 = 0,5.Я хочу добавить пользовательский ключ к этим номерам.например:

Клавиша:хос110 =>

  • R = 3,9988104111115049049048
  • X0 = 0,5104111115049049048

104111115049049048 - это ASCII-коды ключа, которые объединены.

Как я могу сохранить эти цифры?

Есть ли лучший способ сделать это?

Обновить:Как насчет MATLAB?

Это было полезно?

Решение

Если вам нужна бесконечная точность, вам нужно что-то, что называется BigInteger .Однако эти классы обычно используются только для научных вычислений (и обычно не подходят для упорядочивания данных), которые, похоже, на самом деле не соответствуют вашему образцу кода.Если вам нужно выполнить только общие вычисления, используйте строки, а затем преобразуйте их в десятичные для вычислений.

Однако, если вы ищете такой большой класс IntErterger, вы можете найти его здесь.

.Net 4.0 будет иметь встроенный класс BigInteger в библиотеках классов с именем System.Numerics.BigInteger.

Другие советы

На самом деле вы не "добавляете" числа.Вы объединяете строки.

Храните их в виде строк. Вы не можете быть намного точнее, чем это.

Если вам нужно выполнить какие-либо арифметические операции, достаточно легко преобразовать их в десятичное число "на лету".

Я не совсем понимаю, почему вы используете ключ как часть числа, но оставим это в стороне... System.Decimal (он же decimal) кажется, это подходящий инструмент для данной работы.

Что ж, в зависимости от точности, которой вы пытаетесь достичь, вы, вероятно, можете сохранить их в виде пары десятичная дробь ценности.

Однако, если это ASCII-код, вы можете просто сохранить их непосредственно в виде строки.Это позволит избежать проблем с числовой точностью, особенно если вы собираетесь использовать 104111...до использования этой информации.

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

Числа с плавающей запятой по своей сути неточны.Я не уверен, что это за "начальная конфигурация" или почему она с плавающей точкой, но вы не сможете использовать "пользовательский ключ" (каким бы он ни был) и восстановить его позже.Храните пользовательский ключ отдельно, в виде строки или чего-то еще.

Если эти "числа" не имеют числового значения, т.е.вы не будете использовать их для математических вычислений, тогда нет необходимости хранить их в числовом типе данных.Вы можете хранить их в виде строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top