所以,我正在编写一个加密交易机器人。我可以计算出我可以用我拥有的 BTC 购买多少 ETH,但你只能以增量价值购买 ETH。根据硬币的不同,增量的范围从 1000 到 0.001。
问题是如果增量为 0.001 和 120 如果增量为 10,我如何将 123.456789 舍入到 123.456。
编辑-建议的另一个问题是固定数量的 DP,而这是可变的。
所以,我正在编写一个加密交易机器人。我可以计算出我可以用我拥有的 BTC 购买多少 ETH,但你只能以增量价值购买 ETH。根据硬币的不同,增量的范围从 1000 到 0.001。
问题是如果增量为 0.001 和 120 如果增量为 10,我如何将 123.456789 舍入到 123.456。
编辑-建议的另一个问题是固定数量的 DP,而这是可变的。
假设增量值是 10 的幂,正数或负数,算法如下:
乘以 10 的幂将小数点的位置“移动”位数等于乘以的幂。这样做会将要截断的部分定位在小数点之后。
public static decimal RoundDown(decimal val, decimal pos) {
return pos * Math.Truncate(val / pos);
}
请注意,这种方法适用于高于和低于 1 的增量。当增量为 10 时,除以得到 12.3456789,截断得到 12,然后乘回得到所需的值 120。
您可以使用地板:
double val = (double)Math.Floor(originalValue / increment) * increment;
使用
Math.Floor(原始值/增量)
给出你可以花费的“加密单元”的数量,然后乘以增量得到“加密单元”的总数。