0

所以,我正在编写一个加密交易机器人。我可以计算出我可以用我拥有的 BTC 购买多少 ETH,但你只能以增量价值购买 ETH。根据硬币的不同,增量的范围从 1000 到 0.001。

问题是如果增量为 0.001 和 120 如果增量为 10,我如何将 123.456789 舍入到 123.456。

编辑-建议的另一个问题是固定数量的 DP,而这是可变的。

4

2 回答 2

1

假设增量值是 10 的幂,正数或负数,算法如下:

  • 将值除以增量
  • 截断结果的小数部分
  • 将截断值乘以增量

乘以 10 的幂将小数点的位置“移动”位数等于乘以的幂。这样做会将要截断的部分定位在小数点之后。

public static decimal RoundDown(decimal val, decimal pos) {
    return pos * Math.Truncate(val / pos);
}

请注意,这种方法适用于高于和低于 1 的增量。当增量为 10 时,除以得到 12.3456789,截断得到 12,然后乘回得到所需的值 120。

演示。

于 2018-03-16T11:07:46.607 回答
0

您可以使用地板:

double val = (double)Math.Floor(originalValue / increment) * increment;

使用

Math.Floor(原始值/增量)

给出你可以花费的“加密单元”的数量,然后乘以增量得到“加密单元”的总数。

于 2018-03-16T11:14:08.897 回答