将Biginteger值乘以double值

我想将Biginteger乘以这样的两倍

buyableObjects[index - 1].cost = buyableObjects[index - 1].cost * BigInteger.Pow((BigInteger)multiplier,buyableObjects[index - 1].indexMultiplier);

问题在于乘数是等于1.15的双精度值,而BigInteger忽略了0.15。也许有办法将我的对象的成本(也就是Biginteger值)乘以double值1.15,然后将其舍入为biginteger吗?

q791656449 回答:将Biginteger值乘以double值

您可以改为乘以115,然后除以100。

,

我们可以看到here,BigInteger.Pow()接受一个BigInteger,后跟一个常规的Base 32整数。因此,如果您只是要使用双精度数,那么我不明白为什么要使用BigInteger.Pow()函数。

由于我们知道乘数是double,而buyableObjects [index-1] .indexMultiplier是整数, 我宁愿做

double finalMultiplier = Math.Pow(multiplier,buyableObjects[index-1].indexMultiplier);

然后,您只需要面对将BigInteger乘以两倍的问题,可以通过将其分解为乘法和除法来解决。

例如,finalMultiplier = 2.27;由于我们不确定finalMultiplier将有多少小数位,因此您可能必须在这一点上进行四舍五入。您可以使用Math.Round()函数来实现。 例如:

    int decimalPlaces = 2;
    double finalMultiplier = 2.225f;
    finalMultiplier = Math.Round(finalMultiplier,decimalPlaces,MidpointRounding.ToEven);
    //Will round 2.225 to 2.22
    BigInteger cost = new BigInteger(500);
    cost *= ((BigInteger) (finalMultiplier * Math.Pow(10,decimalPlaces))); //Multiply by 222
    cost /= (BigInteger) (Math.Pow(10,decimalPlaces)); //Divide by 100
    print(cost); //1110

Here的一些有关C#中不同取整模式的信息。这样做可以帮助您指定要如何进行四舍五入,并且我已经向您展示了如何实现其他人所说的分解小数的内容。我会让您自由选择正确的变量,但是希望这会有所帮助!您要做的就是用BigInteger替换成本并使用我在那里提供的finalMultiplier。您可以根据自己的喜好自定义小数位数。

本文链接:https://www.f2er.com/3108203.html

大家都在问