C# 显示所有数字的c无限计算器

C# 显示所有数字的c无限计算器,c#,C#,我正在尝试创建一个计算器,其中有两个文本框用于数字输入,最后一个文本框用于显示数字。然而,我想让它在没有科学符号的情况下至少达到80位小数不要紧。有人对我如何实施这一点有什么建议吗 多谢各位 public void button1_Click(object sender, EventArgs e) { //Addition **resultAdd = Convert.ToDouble(tb1.Text) ;** tb2.Enabled

我正在尝试创建一个计算器,其中有两个文本框用于数字输入,最后一个文本框用于显示数字。然而,我想让它在没有科学符号的情况下至少达到80位小数不要紧。有人对我如何实施这一点有什么建议吗

多谢各位

public void button1_Click(object sender, EventArgs e)
    {

        //Addition 
        **resultAdd = Convert.ToDouble(tb1.Text) ;**

        tb2.Enabled = true;
        calcFunc = "Add";


     }



    private void btnSubtract_Click(object sender, EventArgs e)
    {
        //subtract
        resultSubtract = Convert.ToDouble(tb1.Text) + 0;
        tb2.Enabled = true;
        calcFunc = "Subtract";
    }

    public void btnEqual_Click(object sender, EventArgs e)
    {

        double totalResult;


        switch (calcFunc)
        {
            case "Add":
                   totalResult = Convert.ToDouble(tb2.Text) + resultAdd;
                   total = tbTotal.Text.ToCharArray();
                   string x = Convert.ToString(totalResult);
                   tbTotal.Text = x;

                //   tbTotal.Text = x;
                   tbTotal.Enabled = true;

                   **totvalue = BigInteger.Parse(x);**

如果小数不重要,您的意思是您只处理整数,并且假设您使用的是.NET4或更高版本,那么您应该使用允许任意大整数的

您仍然需要完成所有GUI工作,但可以使用BigInteger进行所有计算

简短但完整的示例表明BigInteger完全能够处理大数字:

using System;
using System.Numerics;

class Test
{
    static void Main()
    {
        string text = new string('1', 80);
        BigInteger number = BigInteger.Parse(text);
        Console.WriteLine(number);
    }
}
编辑:好的,现在你已经发布了你的代码,很明显出了什么问题-你在这个代码中无缘无故地通过double:

totalResult = Convert.ToDouble(tb2.Text) + resultAdd;
total = tbTotal.Text.ToCharArray();
string x = Convert.ToString(totalResult);
tbTotal.Text = x;
totvalue = BigInteger.Parse(x);
您并没有试图处理双值-您正在尝试处理整数,所以使用BigInteger执行所有操作。将resultAdd也更改为BigInteger,然后您只需要:

BigInteger result = BigInteger.Parse(tb2.Text) + resultAdd;

无需进行任何其他字符串转换。

如果按小数表示您只处理整数,并且假设您使用的是.NET 4或更高版本,则应使用允许任意大整数的

您仍然需要完成所有GUI工作,但可以使用BigInteger进行所有计算

简短但完整的示例表明BigInteger完全能够处理大数字:

using System;
using System.Numerics;

class Test
{
    static void Main()
    {
        string text = new string('1', 80);
        BigInteger number = BigInteger.Parse(text);
        Console.WriteLine(number);
    }
}
编辑:好的,现在你已经发布了你的代码,很明显出了什么问题-你在这个代码中无缘无故地通过double:

totalResult = Convert.ToDouble(tb2.Text) + resultAdd;
total = tbTotal.Text.ToCharArray();
string x = Convert.ToString(totalResult);
tbTotal.Text = x;
totvalue = BigInteger.Parse(x);
您并没有试图处理双值-您正在尝试处理整数,所以使用BigInteger执行所有操作。将resultAdd也更改为BigInteger,然后您只需要:

BigInteger result = BigInteger.Parse(tb2.Text) + resultAdd;

无需进行任何其他字符串转换。

@FaRa13:那么您试图解析的值是什么?没有更多的信息我们帮不了你。这确实是您应该使用的类。它可以是任意大的数字,至少80个字符。字符串x=Convert.toString TotalResult-这是我存储最终文本框值的地方。大整数值;totvalue=BigInteger.Parsex;然后在20个左右的数字之后,它给了我一个错误,说无法解析。我们在这里复制您的21位数字,这样我们就可以看到可能出现的错误,请包括所有解析代码。编辑原始问题以显示这些详细信息,而不是在注释中发布另一个答案,在注释中阅读代码太难了。@FaRa13:正如Scott所说,我们需要一个失败值的示例。BigInteger绝对可以处理超过20位的数字。@FaRa13:那么你想解析什么值呢?没有更多的信息我们帮不了你。这确实是您应该使用的类。它可以是任意大的数字,至少80个字符。字符串x=Convert.toString TotalResult-这是我存储最终文本框值的地方。大整数值;totvalue=BigInteger.Parsex;然后在20个左右的数字之后,它给了我一个错误,说无法解析。我们在这里复制您的21位数字,这样我们就可以看到可能出现的错误,请包括所有解析代码。编辑原始问题以显示这些详细信息,而不是在注释中发布另一个答案,在注释中阅读代码太难了。@FaRa13:正如Scott所说,我们需要一个失败值的示例。BigInteger绝对可以处理超过20位的数字。