【问题标题】:Web service, currency input网络服务,货币输入
【发布时间】:2011-02-11 05:07:44
【问题描述】:

Web 服务 API: 我注意到有些公司喜欢传递整数作为“货币”金额,而不是传递带小数位的小数数据类型($ 100.29),这是有充分理由的为什么他们选择整数作为货币而不是十进制数据类型?

例如,他们这样做

  • 100 = 1.00 美元
  • 10043 = 100.43 美元

为什么不这样做

  • 1.00 或 1 = 1 美元
  • 100.43 = 100.43 美元

【问题讨论】:

  • 啊,好的,明白了!以避免四舍五入的问题。
  • 没错!浮点数和双精度数因微妙的舍入问题而臭名昭著。 Decimal 数据类型也精确到 30 位左右,因此它适用于需要更多位数的复利计算等。

标签: c# asp.net web-services currency


【解决方案1】:

并非所有文化都使用相同的小数点字符。通过使用最小的相关货币单位(这里是美分而不是美元),可以避免应该接受/发出什么小数点字符的问题。

【讨论】:

    【解决方案2】:

    不,在提交到服务器进行转换之前,我看不到将 100 因子变为整数的任何真正好处。而且,这在很大程度上取决于他们内部实施的最佳方式。

    我确实在其中一个具有此实现的 Web 服务中注意到了这一点,我发现的原因是因为他们希望将值与其他参数组合为 HASH 以进行内部校验和验证。

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多