按可变金额

时间:2018-03-16 10:59:36

标签: c# rounding cryptocurrency

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

问题是如果增量为0.001,如何将123.456789向下舍入为123.456,如果增量为10,则如何将123向下舍入为120。

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

2 个答案:

答案 0 :(得分:1)

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

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

以10的幂乘以"移位"小数点的位置乘以等于乘以的幂的位数。这样做可以定位要在小数点后截断的部分。

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

请注意,此方法适用于高于和低于1的增量。当增量为10时,除以产量12.3456789,截断产生12,再乘回产生所需的值120.

Demo.

答案 1 :(得分:0)

你可以使用楼层:

var h = $('.expert').height();
  $('.expert .col-sm-6 div').height(function (index, height) {
    return (h);
});

使用

Math.Floor(originaValue / increment)

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