Как отформатировать значения Int64 в валюту

Я занимаюсь разработкой приложения, в котором я сохраняю денежные значения в базе данных как int64.

Например, если я сохраню 1 евро в базе данных, он будет сохранен как 100 центов. Когда я читаю значение, как я могу отформатировать его, чтобы оно отображалось так:

db value / output
100000 = 1,000.00
10000 = 100.00
1000 = 10.00
100 = 1.00
10 = 0.10
1 = 0.01

Я экспериментировал с string.format, но я не могу получить нужные мне результаты... Ваша помощь будет оценена, большое спасибо.

2 ответа

Решение

Вы можете создать кастом NumberFormatInfo объект с необходимыми свойствами и использовать его для форматирования вывода. Приведенный ниже код не предполагает, что значение поступает из базы данных, но не должно быть никакой разницы:

// Create custom number format
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
nfi.NumberGroupSeparator = ",";
// You can also set property NumberDecimalDigits to the number of decimal digits that you need:
nfi.NumberDecimalDigits = 2;

// Output the results
long textValue = 123456789;
Console.WriteLine((textValue/100m).ToString("N", nfi));

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

Ваш самый простой способ сделать это, вероятно, иметь SQL обрабатывать преобразование для вас. Предполагая, что у вас есть SQL Server, вы можете просто использовать функцию FORMAT(db_value/100.0,'#,##0.00')

https://msdn.microsoft.com/en-us/library/hh213505.aspx

Другие вопросы по тегам