У меня есть текстовое представление двойника, и я хочу знать, безопасно ли совершать круговые поездки, чтобы удвоить и обратно. Как мне узнать об этом, если я также хочу принять любой вид числового стиля ввода? Или как узнать, теряется ли какая-либо точность при анализе двойной строки с помощью Double.Parse? Или как мне ToString удвоить, чтобы он соответствовал тому же формату, что и другая двойная строка? Ответ на любой из этих вопросов был бы решением, я думаю.
Как узнать, безопасна ли двойная строка в оба конца?
Ответы (2)
Используйте спецификатор формата R
, чтобы преобразовать double
в string
:
myDouble.ToString("R")
См. Описатель формата "R" на MSDN.
Описатель формата туда и обратно ("R") гарантирует, что числовое значение, преобразованное в строку, будет преобразовано обратно в то же числовое значение. Этот формат поддерживается только для типов Single, Double и BigInteger.
(выделено мной)
double
в виде строки. Для начала нужно предположить непротиворечивое представление.
- person Oded; 22.08.2012
Конечно, это не безопасно по нескольким причинам:
Формат числа теряется при синтаксическом анализе String на двойник, так как двойник не содержит никакой информации о его визуальном представлении.
Хотя строковое представление обычно будет десятичным, double — это двоичное число с плавающей запятой. Таким образом, 0,1 в double не будет точно 0,1, поскольку двоичное представление 0,1 не имеет конечного числа цифр. Чтобы избежать этой проблемы, вы можете разобрать десятичное число вместо двойного.
Я бы предложил создать структуру, которая хранит как числовое, так и строковое представление.