C#/Unity:BigInteger乘以Float
我有一个BigInteger成本=111111 22222 333 444444 555555和一个浮点成本乘以1.1f 我尝试:C#/Unity:BigInteger乘以Float,c#,unity3d,biginteger,bigint,C#,Unity3d,Biginteger,Bigint,我有一个BigInteger成本=111111 22222 333 444444 555555和一个浮点成本乘以1.1f 我尝试: newCost = cost * costMultiply 并获取一个“运算符”*“无法应用”-错误 我还尝试: int multiplierBuffer = (int)(costMultiply * 10); cost = cost * (multiplierBuffer / 10); 这不会引发错误,但会返回初始成本值(不乘以1.1f) 如何将我的BigIn
newCost = cost * costMultiply
并获取一个“运算符”*“无法应用”-错误
我还尝试:
int multiplierBuffer = (int)(costMultiply * 10);
cost = cost * (multiplierBuffer / 10);
这不会引发错误,但会返回初始成本值(不乘以1.1f)
如何将我的BigInteger与浮点相乘?您必须将BigInteger转换为double/double
BigInteger cost = new BigInteger(10000000000000000000);
float costMultiply = 1.1f;
double dCost = (double) cost;
double result = dCost * costMultiply;
// And since you want a BigInteger at the end
BigInteger bigIntResult = new BigInteger(result);
result
的实际类型将是Double
,因为整数不能放入Double
中。C#会帮你处理的
这显然可以简化
BigInteger cost = new BigInteger(10000000000000000000);
float costMultiply = 1.1f;
BigInteger bigIntResult = new BigInteger((double) cost * costMultiply);
问题是,由于数据类型的精度水平不同,您的数学将变得非常糟糕。如果你需要精确性,我不会使用这种方法。但是,由于您希望将一个整数乘以一个浮点数并得到一个整数结果,因此我想您不会被精度问题所困扰。乘以11除以10costMultiply是一个不总是1.1f的变量。它最终可能会有不同的小数,所以我需要一个使用浮点变量而不是硬编码值的解决方案。您希望结果是什么类型的?这里有30位精度。你都需要吗?如果是这样的话,您就只能使用BigInteger了(浮点数为6-9位,双精度为15-17位,小数位数为28-29位)。写一些代码,将一个浮点数转换为10的乘除(提示,使用对数),然后这样做。我希望结果是另一个大整数。在我的程序中,任何BigInteger都不会大于30位。“将浮点转换为乘除”是什么意思?如果乘法器是,例如,
2.25f
,请找出小数点后有两位数字(最简单的方法可能是在每次迭代时使用循环,乘以10,并检查确保整数舍入到整数时足够接近)。在您的例子中,22.5不接近22,但225起作用)。所以乘数是225,除数是100。我会写下来回答,但我在打电话