gpt4 book ai didi

c# - 将 BigInteger 乘以 Double

转载 作者:行者123 更新时间:2023-11-30 20:29:10 29 4
gpt4 key购买 nike

我的物理老师给全类布置了一项艰巨的任务。我正在尝试创建一个程序来为我计算一些东西。在某个时候,我需要将一定数量的分子乘以一个百分比。 Ulong 不能容纳 6022 * 10 ^ 19 这样大的数字,所以我必须使用 .net 4.0 中的 BigInteger。但是,乘法不能应用于 BigInteger 和 double。我只需要整数。有什么办法可以绕过这个吗?代码如下:

private static BigInteger pencapmoles = BigInteger.Pow(6022/9, 19);
private static BigInteger inkmoles = pencapmoles;
private static BigInteger tries = 0;
private static BigInteger molesinbucket = BigInteger.Pow(26761768, 19);
private static double percentage;
static void Main(string[] args)
{
while (inkmoles > 1)
{
percentage = (double)(inkmoles / molesinbucket);
inkmoles = pencapmoles * percentage;
tries++;
}
Console.WriteLine($"It only took us {tries} tries.");
}

最佳答案

最好将所有计算切换为 doubleBigInteger。 C# double 有足够的范围来保存比 1019 大得多的值,但答案会略微不精确。几乎可以肯定,这足以解决您的任务。

如果切换到BigInteger,先乘,再除:

inkmoles = (inkmoles * pencapmoles) / molesinbucket;

关于c# - 将 BigInteger 乘以 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506473/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com