Как убрать знак вопроса из строки в консоли?

Вот код:

float price = 2.7530f;

Console.WriteLine($"${price * 100:C}k");

Он должен вывести так: $275.30k. Но он мне выводит знак вопроса между последней цифрой и k. Как его убрать?

Скриншот: введите сюда описание изображения


Ответы (2 шт):

Автор решения: Никита

Для исчисления денежной стоимости используйте тип данных decimal Перепишите код и запустите отладку :)

→ Ссылка
Автор решения: Alexander Petrov

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

Очевидно, у вас код запускается на русскоязычной Винде, в которой стоит русский язык по умолчанию. При этом должен выводиться знак "₽" - символ рубля. Но проблема с кодировкой.

Шло третье десятилетие двадцать первого века, проблемы с кодировками в консоли продолжали существовать...

Если, например, вы добавите в код строку Console.OutputEncoding = Encoding.UTF8; то получите вывод 275,30 ₽k.

Но вы добавляете к значению символ доллара: $. Из этого можно сделать вывод, что вам нужен вывод денежных значений в культуре en-US.

Можете задать её как глобально:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine($"{price:C}k");

так и локально:

Console.WriteLine(price.ToString("C", new CultureInfo("en-US")) + "k");

В обоих случаях получите результат $275.30k.

Обратите внимание, при этом не нужно вручную добавлять символ доллара $.

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

→ Ссылка