如何将 Int64 值格式化为货币

How to format Int64 values to currency

我正在开发一个应用程序,我在数据库中将钱值保存为 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 但我无法获得我需要的结果... 非常感谢您的帮助。

您可以创建具有所需属性的自定义 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 服务器,你可以简单地使用函数 FORMAT(db_value/100.0,'#,##0.00')

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