как определяется десятичная цифра в ToString (CultureInfo.NumberFormat) - PullRequest
0 голосов
/ 21 марта 2012

Сегодня я столкнулся с проблемой форматирования десятичной дроби с использованием CultureInfo в C #.У меня десятичное значение fValue имеет значение 999, при запуске fValue.ToString (CurrentCulture.NumberFormat) возвращается 999.0000.При отладке в VS я могу получить следующие значения в окне Watch:

fValue //returns 999
fValue.ToString(CurrentCulture.NumberFormat)  //the issue returns 999.0000 
(999M).ToString(CurrentCulture.NumberFormat)  //returns 999
CurrentCulture.NumberFormat.NumberDecimalDigits //returns 2

Почему второе значение возвращает 999.0000, а не 999 или 999.00?Извините за мою хрень на английском, кому-то, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2016

Структура Decimal сохраняет точность значений после анализа строки, а также при выполнении вычислений. Метод ToString () правильно указывает фактическую внутреннюю точность значения независимо от используемой культуры.

Однако, кажется, что отладчик отображает значение в его простейшей форме вместо того, чтобы показывать, что должен возвращать ToString (), что по меньшей мере сбивает с толку.

0 голосов
/ 17 октября 2012

Используя свойство CurrentCulture.NumberFormat.CurrencyDecimalDigits, вы получите количество десятичных цифр для типа Decimal. Тип 999M - это typeof (десятичный), и он считается валютой.

...