相关疑难解决方法(0)

C#中Java BigDecimal类的等价物是什么?

BigDecimal是一个java.math包中的类,它具有处理大量特定规模的许多好处.c#中是否存在具有此功能的等效类或数据类型.

c# java bigdecimal equivalent

45
推荐指数
4
解决办法
5万
查看次数

如何处理大于double的最大值的浮点值

我的值大于1.97626258336499E-323

我也不能使用BigInteger,因为它只处理整数值

任何帮助表示赞赏

以下是一些用户给出的解决方案失败的代码也失败了:

BigValue / (Math.Pow((1 + ret), j));
Run Code Online (Sandbox Code Playgroud)

这个BigValue就像15000.25

ret是-0.99197104212554987

j将大约500-600.

我也没有想到如何使用Rational Class

.net c# math bigdecimal

6
推荐指数
1
解决办法
1705
查看次数

快速计算大浮点数就像0.4 ^ 1亿,任何想法?

嗯......我遇到了一个问题我有一个计算结果是超过10 ^ -308(双.net中的最大值)我通过一个名为BIGFLOAT的库解决了这个问题http://www.fractal- landscapes.co.uk/bigint.html,

我需要计算一些像0.4 ^(1000或100000000)这样的问题我需要花很长时间来研究并行或分布式编程但是我需要一个快速且易于理解的解决方案我将要去在接下来的6小时内完成这个项目!! :d

这是代码:

private BigFloat getBlocking(double k)
    {
        double p1, p2;
        BigFloat p3;
        p3 = new BigFloat(pp);
        p1 = this.P / (double)(k / (double)this.N);
        p2 = Math.Pow((1 - p1), 2);
        p3= new BigFloat(1-p2,pp);
        p3.Pow((int)k);
        return p3;

    }
Run Code Online (Sandbox Code Playgroud)

其中K是1000,N是1001

c# performance computation bigint bigfloat

2
推荐指数
1
解决办法
3112
查看次数

仅使用加法和乘法来实现除法

我正在用C#编写一个BigDecimal类.我已经成功实现了+, - 和*运算符.但我无法想出一种计算2 BigDecimals除法的方法.使用这3个运营商实施部门的最快捷方式是什么?或者有更好的方法吗?(考虑开发时间和算法速度)

目标1:我希望结果是具有固定精度的另一个BigDecimal(应该是可更改的)

目标2:正如您所提到的,BigDecimal的目的不是固定的精度.那么我怎样才能实现无限精度呢?

另一个问题:使用Microsoft BCL的BigRational类进行任意精度算术然后在此线程中使用Christopher Currens的扩展方法更好(关于速度和灵活性):C#中是否有BigFloat类?得到十进制表示而不是写一个新类?

c# math division

2
推荐指数
1
解决办法
1200
查看次数

十进制到分数

我正在研究一个需要接受和显示复杂分数的系统.接受分数并将它们转换为double作品的代码,但是当我想显示该值时,我需要转换回小数表示.

编辑:我已经修复了溢出问题,但是没有解决像1/3或5/6这样的分数.所以我设计了一种非常黑客的方法来做到这一点.我有代码生成1-> 64的每个分数0-> 64的十进制表示,并保存最简化的形式.这样,我可以遍历列表并找到最接近的分数,并简单地显示它.我有一些后会发布代码.

我现在的代码适用于绝大多数数字,但偶尔我会得到一小部分数字1/321.这会转换为double,但不能转换回来,因为在我的方法中,分子会导致整数溢出.

这是我的代码,我想知道是否有更好的方法,或者是否有一些方法可以安全地将这些转换为long而不会失去正确结果所需的精度:

public static String DecimalToFraction(double dec)
    {
        string str = dec.ToString();
        if (str.Contains('.'))
        {
            String[] parts = str.Split('.');
            long whole = long.Parse(parts[0]);
            long numerator = long.Parse(parts[1]);
            long denominator = (long)Math.Pow(10, parts[1].Length);
            long divisor = GCD(numerator, denominator);
            long num = numerator / divisor;
            long den = denominator / divisor;

            String fraction = num + "/" + den;
            if (whole > 0)
            {
                return whole + " " + fraction;
            }
            else
            { …
Run Code Online (Sandbox Code Playgroud)

c# math integer-overflow

2
推荐指数
1
解决办法
4815
查看次数

转换为double和back的BigInteger/BigRational问题

也许我不明白如何使用这两种类型:BigInteger/BigRational,但一般来说我想实现这个方程式: 在此输入图像描述

这是我的数据:n = 235,K = 40,这个小p(实际上称为rho)是5.一开始问题出现在Power函数中:结果非常非常大 - 所以这就是为什么我使用BigInteger库.但后来我意识到会有一个分区,结果将是一些双重类型 - 所以我改为BigRational库.

这是我的代码:

static void Main(string[] args)
    {
        var k = 40;
        var n = 235;
        var p = 5;

        // the P(n) equation
        BigRational pnNumerator = BigRational.Pow(p, n);
        BigRational pnDenominator = BigRational.Pow(k, (n - k)) * Factorial(k);


        // the P(0) equation

        //---the right side of "+" sign in Denominator
        BigRational pk = BigRational.Pow(p, k);
        BigRational factorialK = Factorial(k);
        BigRational lastPart = (BigRational.Subtract(1, (double)BigRational.Divide(p, k)));
        BigRational factorialAndLastPart = BigRational.Multiply(factorialK, lastPart);
        BigRational fullRightSide …
Run Code Online (Sandbox Code Playgroud)

c# biginteger

2
推荐指数
1
解决办法
1432
查看次数