基于整数的c ++十进制实现

时间:2014-01-09 14:31:58

标签: c++

在我的交易应用程序中,我必须使用小数来表示价格。我需要尽可能低的延迟,所以唯一可接受的解决方案是使用int64来表示十进制。我可以全局配置我不需要例如点后5位数,然后到处

    0.0000001 is not supported
    0.000001 is not supported
    1 should be used instead of 0.00001
    10 should be used instead of 0.0001
    100 should be used instead of 0.001
    1000 should be used instead of 0.01
    10000 should be used instead of 0.1
    100000 should be used instead of 1
    and so on

是否有任何图书馆可以帮助完成此类工作?如果我需要任何库,我完全不明白,可能我应该只使用int64,就是这样吗?欢迎任何提示和建议。

upd 我现在意识到devidemultiply根本不是obvios。所以我正在寻找一些只有头文件库来添加一些函数宏来存储/乘以存储在INT64中的固定点。

1 个答案:

答案 0 :(得分:3)

您的建议基本上是fixed point arithmetic。这是一种仅使用整数运算实现小数分数计算的方法。它可以具有一些速度优势(在某些系统上),如果正确完成可以避免通过浮点引入的一些错误。

虽然所涉及的数学非常简单,但是有些图书馆可以提供帮助。你可能会发现阅读这个主题并自己实现它很容易。