【问题标题】:Best practices when working with currencies使用货币时的最佳实践
【发布时间】:2011-10-29 04:48:13
【问题描述】:

我正在开发一个可能会在全球范围内部署的桌面应用程序。我最大的国际化问题是货币。几个问题:

我正在使用支持MONEY 类型的SQL Server Compact Edition。我的第一个问题是,无论用户的文化如何,这都会处理数据存储吗?

我的第二个问题是数据处理。我知道我可以使用“C”格式字符串,我想这可以显示,但是当我保存回来时,我如何处理用户输入的值?是否有一种标准方法来解析输入的值并将其保存到 MONEY 字段,同时具有文化意识并且不必为任何类型的异常编写代码?

我在 WPF 中使用 C#,但我猜这可能有一个近乎通用的解决方案。

【问题讨论】:

  • Decimal.TryParse() 应该做符合文化的事情。

标签: c# currency sqldatatypes


【解决方案1】:

MONEY 类型只是告诉系统使用正确处理货币计算所需的精度和舍入规则。它对实际货币一无所知。您需要在 UI 中使用货币转换规则来处理它。

框架使用当前文化来显示货币字符串格式的正确货币符号,但如果您显示不同的货币,则需要覆盖此行为。

使用 C#/WPF(和 Silverlight),如果您在 XAML 中使用 StringFormat 输出货币,那么它也会处理用户输入(或者至少根据我的经验)。

【讨论】:

  • 框架中的方法已经具备文化意识。他们使用调用线程的当前文化来相应地解析和转换字符串。如果需要,您还可以自定义此转换。
  • @alfonso - 但如果您显示不同的货币,您需要自己处理。
  • 没错,但您实际上并不需要知道文化的具体格式。您可以获得文化的默认 IFormatConverter 并在解析/转换时使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2011-04-18
  • 1970-01-01
  • 2013-09-28
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多