Как убрать знак вопроса из строки в консоли?
Вот код:
float price = 2.7530f;
Console.WriteLine($"${price * 100:C}k");
Он должен вывести так: $275.30k. Но он мне выводит знак вопроса между последней цифрой и k.
Как его убрать?
Ответы (2 шт):
Для исчисления денежной стоимости используйте тип данных decimal
Перепишите код и запустите отладку :)
"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.
Обратите внимание, при этом не нужно вручную добавлять символ доллара $.
Также обратите внимание, что в русскоязычной культуре в качестве десятичного разделителя будет запятая, а в англоязычной - точка.
