.NET的Money数据类型?

Joh*_*n K 35 .net currency financial

寻找支持货币汇率(包括相关行为和操作)的.NET 的良好Money数据类型.

  • 注意:我开始在作者Kent Beck 的" 测试驱动开发示例 "一书中搜索印刷中看到的源代码- 他开发了一个很好的货币概念.无法在线找到完整的来源.这本书不包含一个单一的列表 - 而是在书的持续时间内开发源代码.

虽然这本书没有深入,但我还希望Money课程支持不同的舍入机制,因为全球金融机构也有所不同.

编辑1: 澄清

"Money class"是指我可以用来支持货币及其运营的.NET数据类型,包括货币支持和汇率计算.类似的东西是更高级别的抽象,可能在内部使用原始数据类型.它也可能依赖于一堆类,如:Money,ExchangeRate,Bank等.

它可能是值类型(即结构)或引用类型(即类),但无论哪种方式它都是完整的并支持上述特征.

编辑2:Money数据类型的目标

(这也说明了原始十进制,int或其他原始类型不足以满足所有Money需求的原因)

Money数据类型的目标是:

  • 安全功能(即防止不同货币类型的算术).
  • 使用值存储货币类型(即AUD,US,DKK).
  • 存储格式详细信息(即十进制分组,货币符号等).
  • 转换提供商(例如汇率)以帮助完善解决方案.
  • 减少表达式中的多种货币以实现结果.

注意:可以从外部源加载变量数据值(如汇率)并使用.这个问题并没有推断任何动态是硬编码到Money的概念.

wah*_*eed 9

Martin Fowler认为金钱是"数量"的一个特例,其次他认为正确的数据类型应该是大整数.他确实有一点意见.

马丁福勒的数量和金钱模式

  • 如果您不需要处理需要维持一小部分分数的严格财务信息(例如货币市场,交易等),则将货币视为整数,例如小数3.58,因为整数358美分是好的.Money int quantity适用于零售等简单的货币需求. (3认同)

Joh*_*n K 5

货币数据类型@代码项目

http://www.codeproject.com/KB/vb/moneyDatatype.aspx

作者陈述类似的问题:

作为最近的一个应用程序的一部分,我意识到缺乏.NET是为了货币支持,不要误会我的意思,有很多"碎片",但缺少所有项目的粘合剂,所以这篇文章是对此的回应.

并实现目标

我的主要目标变成了

  • 使用值存储货币类型(即AUD,US,DKK).
  • 存储格式详细信息(即十进制分组,货币符号等).
  • 转换提供程序,我不想硬编码,因为它是一种数据类型而不是解决方案.
  • 开发安全功能(即防止不同货币类型的算术).

到目前为止,这是我正在搜索的最接近的.NET代码.它满足了Money的大多数要求.

如果有人有更好的东西,我将不胜感激.


Mar*_*nze 5

NodaMoney提供了一个库,该库将 Money 视为 .NET 中的一等公民,并处理所有丑陋的部分,如货币和格式。

它符合 ISO 4217 中的货币。它是 Java 库 JodaMoney 的 .NET 对应物。


Kaz*_*zar 1

看看这里:

http://blogs.msdn.com/lucabol/archive/2008/12/04/financial-functions-for-net-released.aspx

它提供了一个复制所有 Excel 财务功能的 .NET 库。

进行货币转换很棘手,因为显然它会不断变化,因此硬编码的值或多或少是无用的。但是,您可以使用网络服务来获取最新的汇率。 看起来是一个好的开始。更好的是,同一个转换器的 REST 风格的接口:

http://www.webservicex.com/CurrencyConvertor.asmx/ConversionRate?FromCurrency=GBP&ToCurrency=EUR
Run Code Online (Sandbox Code Playgroud)

这样就输出了英镑对欧元的汇率。