【问题标题】:Avoiding floating-point arithmetic with currency避免使用货币进行浮点运算
【发布时间】:2018-03-19 01:41:33
【问题描述】:

我正在编写一个使用美国货币(便士、五分钱、一角硬币、四分之一美元和半美元)的模拟器。实现是这样的:

B = B_0;

While not done:
   B += simulate(strategy, investment);

我想避免浮点数,同时不必对溢出进行昂贵的检查(如 B

【问题讨论】:

  • 你的标题要求一件事,但正文要求另一件事。您是否在问如何执行整数加法而无需检查溢出?或者您是在问如何在不使用浮点数的情况下表示货币?
  • 这看起来不像 C 代码。仅以美分表示所有价格有什么问题,然后当您最终显示结果时,转换为美元-n-美分显示?

标签: c optimization financial


【解决方案1】:

如果您使用的是 GCC,则可以使用 __builtin_add_overflow 执行快速添加和溢出检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2022-07-12
    • 2012-11-26
    • 2016-08-27
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多