【问题标题】:C++ accounting application floating point to fixed pointC++ 会计应用程序浮点到定点
【发布时间】:2014-04-16 09:42:15
【问题描述】:

我有一个使用浮点数进行计算的 c++ 分类帐应用程序,现在我应该怎么做才能转换为定点算法(小数点后最多 4 位),而不会在程序中产生更多错误。我应该采用任何逐步的过程或防止错误的提示?请推荐一些有用的测试用例

【问题讨论】:

  • 创建一套单元测试来涵盖应用程序中的所有当前计算将是一个好的开始。在这种情况下,能够轻松地在定点和浮点之间进行交换将是一件好事,这样您就可以轻松地比较结果。

标签: c++ floating-point


【解决方案1】:
  1. 引入用于相关计算的类型Currency(如果尚未完成)
  2. 确保所有相关号码都存储为Currency,而不是double,或float
  3. 用定点实数类型定义Currency。您可以使用现有的实现,例如CodeF00's numeric::Fixed。另见What's the best way to do fixed-point math?

【讨论】:

  • 请提出测试和提示以避免性能问题。:)
  • 我查看了您的参考资料,很抱歉天真,但它说根据您的架构(位大小)您可以 typedef 固定类。例如 typedef fixed 固定。如果我将我的数据转移到不同的架构会不会有影响。任何方式来保持它的统一。
  • 测试提示是非常特定于应用程序的。不能说任何不明显的事情,因为您没有关于您的案件的信息。关于您的第二条评论 - 不要犹豫使用问号。
  • 嗯,我已经将 GMP lib 用于复式分类帐系统。我同意您需要了解系统的更多功能来描述测试。但是证明当前浮点算法是否存在错误的测试会很好。我想知道如果我在 GMP 和 GMP 的 MPFR 之上使用定点算术对性能有何影响。
猜你喜欢
  • 1970-01-01
  • 2011-03-24
  • 2011-08-09
  • 1970-01-01
  • 2020-06-29
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多