2015-01-14 2 views
1

Я хочу, чтобы цена была десятичной и десятичный знак был локализован. В зависимости от культуры десятичная цифра может использовать , или ..Ошибка локализации десятичных знаков с помощью «,» и «.».

Сейчас я делаю это:

subItem.price.ToString("#.#", CultureInfo.InvariantCulture); 

Но если цена 0 (без десятичной точки), в результате чего оказывается "" и что делает мой крах системы.

Есть ли лучший образец, чем "#.#", который может обрабатывать 0 в лучшем виде?

+0

Итак, почему вы выбрали 'CultureInfo.InvariantCulture'? –

+0

Что вы хотите, чтобы '0' выглядел? См. [Строки пользовательского цифрового номера] (http://msdn.microsoft.com/library/0c899ak8.aspx). – Corak

+0

Дэвид: потому что я хочу, чтобы он обрабатывал десятичное число в правильном направлении в зависимости от того, где вы находитесь в мире. –

ответ

3

Пробег: 0.#. Покажет 0, если значение 0,0

+0

Perfect! Это было именно то, что я искал! :) –

5

Как об использовании "0" custom format specifier вместо этого?

Console.WriteLine((0).ToString("0.0", CultureInfo.InvariantCulture)); 

печатает

0.0 

Ваш код возвращает пустую строку, потому что от The "#" custom format specifier

Заменяет "#" символ с соответствующей цифрой, если один присутствует; в противном случае цифра не появляется в строке результата. Обратите внимание, что этот спецификатор никогда не отображает нуль, который не является значащей цифрой , даже если ноль является единственной цифрой в строке. Он будет показывать ноль, только если это значащая цифра в количестве, которое отображается .

Кстати, ваш заголовок и ваш вопрос говорят разные вещи. Ваш вопрос не имеет отношения к тому, какой номер десятичного разделителя используется при форматировании вашего значения. Это все о том, почему вы получаете пустую строку при форматировании значения 0.

1

Возможно, попробуйте использовать:

subItem.price.ToString("{0:C}", CultureInfo.InvariantCulture); 

форматирует вашу строку в качестве валюты.

+0

Я не думаю, что OP хочет формат валюты. Он никогда не упоминал о валюте. –

+0

В нем говорится Subitem.Price. Я бы назвал ее валютой – Needham