有谁知道.NET中的钱类型?

Mat*_*teo 19 .net c# currency

有谁知道已经实现的支持i18n(货币,格式等)的.NET框架的资金类型?我一直在寻找一个很好实现的类型,似乎找不到一个.

jfs*_*jfs 17

查看本文CLR的Money类型

CLR的一种方便,高性能的货币结构,可以处理算术运算,货币类型,格式化,仔细分配和舍入而不会丢失.

  • 它有问题:(1)我已经看到很多情况,其中相等的Money值不等于等于你必须首先转换为小数.(2)它非常胖:它包含:Int64,Int32,3个字符串和一个UInt16.作者不理解十进制类型的性质.(3)哈希函数相当不理想.(4)你可以得到分数美分(没关系),但ToString()可以得到两位小数. (14认同)
  • 虽然我正在编目问题:(5)它有一个隐含的双重转换,这是危险的(十进制没有那个).(6)IConvertible.ToBoolean被反转(0转换为true).(7)不支持的IConvertible转换根据规范抛出NotSupportedException而不是InvalidCastException. (3认同)
  • (8)MoneyDistributer只有3个单元测试.这让我感到紧张,因为有很多角落案例没有经过测试. (3认同)
  • Re(1),我应该说我看过两个相等的Money值并不等于相等的情况(其中一个的内部值没有正确归一化). (2认同)

Jas*_*son 9

我想你想使用十进制数据类型,并使用适当的重载ToString().

CultureInfo current  = CultureInfo.CurrentCulture;
decimal myMoney = 99.99m;

//formats as money in current culture, like $99.99
string formattedMoney = myMoney.ToString("C", current); 
Run Code Online (Sandbox Code Playgroud)