C# 如何将Int64值格式化为货币

C# 如何将Int64值格式化为货币,c#,asp.net,asp.net-mvc-5,bitcoin,int64,C#,Asp.net,Asp.net Mvc 5,Bitcoin,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,但无法获得所需的结果。。。 非常感谢您的帮助。您可以创建一个具有所需属性的自定义Numbe

我正在开发一个应用程序,在这个应用程序中,我在数据库中将钱的值保存为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 Server,您只需使用函数
格式(db_value/100.0、#、##0.00')


那么十进制和千位分隔符是什么?一千个是
,但100个是
到目前为止,你用string.format做了哪些尝试,得到了什么结果?还有,为什么只有第一个示例不遵循欧洲符号?我认为1应该表示为0.01,而不是0,01,对吗?@HadiHassan这取决于您所在文化的货币格式。有些使用逗号作为小数点分隔符。我编辑了值。谢谢你的回答。我明天试试。但是如果存储的值是例如1000,我想在显示值后使用此方法no.00?@mxcoin如果提供输入1000,它应该显示10.00好的,我使用此方法,它适用于欧元值,但是如果我想格式化比特币值(点后8位),它不起作用。我将分区更改为100000000米:(@mxcoin我更新了答案,也使用了属性
NumberDecimalDigits
。在比特币的情况下,将数字
3
更新为
8
。我进行了试验,并成功地在tostring中将除法设置为10000000M和N8。但您的方法更干净。非常感谢。