Есть ли в C# тип для подсчёта денег?

Фезик разместил пост 07 августа 2018

Вот есть у меня класс Pocket, в котором есть поле Cash. Какой тип мне стоит использовать для отображения денег в этом кошельке? Есть ли какой-то тип в C#, который автоматически округляет значение до 2х знаков после запятой и отображает денежные средства?

Отсортировать по: Стандартный | Последний | Голоса
Nefedor разместил пост 07 августа 2018

Чем больше вмещает в себя тип данных, тем лучше его использовать для отображения валюты. 

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

Для записи денежных средств как правило используется тип decimal. Так как decimal это 16-байтовый тип, он является самым большим (вместительным) примитивным типом данных, что обеспечивает минимальные неточности при округлении.

Для того что б вывести число с 2 знаками после запятой, нужно написать следующее:

            Console.WriteLine("How much money you have in your pocket?");
            Pocket pk = new Pocket();
            pk.Cash = Convert.ToDecimal(Console.ReadLine());

            Console.WriteLine(string.Format(CultureInfo.CreateSpecificCulture("en-us"), "You have {0:C2}", pk.Cash));
            Console.ReadKey();

Nefedor разместил пост 14 августа 2018

Если что, CultureInfo находится в прострастве имён System.Globalization

Close