Предотвращение двойного. Избавиться от удаления завершающих нулей после запятой? - PullRequest
6 голосов
/ 11 декабря 2010

При использовании double.Parse, кажется, нравится вычеркивать любые завершающие (незначительные) нули из строки, которую я конвертирую. Я хотел бы дважды. Оставить в местах после десятичной дроби. Например, вот код:

tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1]));
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty);

Затем отладчик пишет

Преобразовано 4,00 в 4

Так что это похоже на double.Parse делает что-то подозрительное Постскриптум MouseSensitivity также имеет тип double, поэтому я не могу выполнять над ней строковые операции.

Ответы [ 4 ]

5 голосов
/ 11 декабря 2010

Ваш вопрос не имеет смысла.У двойников нет"мест после десятичной дроби".Они не хранят ничего, что внешне выглядит как «десятичное представление числа».Фактически, они не хранят ничего внутри, что выглядит как распознаваемый текст.

В отчете 4, потому что 4.00 точно равно 4. Он отображает число «ровно четыре без дробной части» какк его правилам по умолчанию для преобразования чисел в текст.

Пожалуйста, прочитайте this .Да, это долго и сложно, но просто невозможно использовать числовые типы с плавающей точкой правильно без реального понимания этого материала - и не важно, чтоязык, который вы используете.

2 голосов
/ 11 декабря 2010

Тип данных double - это просто число;он не отслеживает строку, которая была проанализирована для создания значения.Его строковое представление вступает в игру только тогда, когда вызывается .ToString().

0 голосов
/ 11 декабря 2010

Double не хранит избыточные нули. На вашем уровне представления или представления вы можете отформатировать его, чтобы показать, что он должен отображаться, например, String.Format ("{0: #. ##}", doubleVariable)

0 голосов
/ 11 декабря 2010

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

Это не задание двойного типа отслеживать нужный формат отображения.

...