.NET: десятичная строка в округленную - PullRequest
4 голосов
/ 26 января 2010

Если у меня есть decimal, как мне получить его строковую версию с двумя десятичными знаками? Это не работает:

Math.Round(myDecimal, 2).ToString("{0.00}");

Ответы [ 3 ]

8 голосов
/ 26 января 2010

Не используйте фигурные скобки, они предназначены для встраивания отформатированного значения в более длинную строку, используя string.Format. Используйте это:

myDecimal.ToString("0.00");
2 голосов
/ 26 января 2010

Может быть, я ошибаюсь, но я пробовал myDecimal.ToString();, и это сработало.

0 голосов
/ 26 января 2010

Если myDecimal является System.Decimal, то Math.Round(myDecimal, 2).ToString(); будет отображать две десятичные цифры точности, как вы хотите, без какой-либо строки формата (если абсолютное значение вашего числа не превышает 10 ^ 27-1 ). Это связано с тем, что тип данных decimal сохраняет полную точность числа. То есть 1m, 1.0m и 1.00m хранятся по-разному и будут отображаться по-разному.

Обратите внимание, что это не так для float или double. 1f, 1.0f и 1.00f сохраняются и отображаются одинаково, как и 1d, 1.0d и 1.00d.

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

...