c#infinite显示所有数字的计算器

Bal*_*a13 1 c#

我正在尝试创建一个计算器,其中有两个用于数字输入的文本框,最后一个用于显示数字.但是,我想这样做,它将至少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);**
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

如果"小数无所谓"你的意思是你只处理整数,假设你使用的是.NET 4或更高版本,那么你应该使用System.Numerics.BigInteger允许任意大整数的整数.

(您仍然需要完成所有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);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:好的,现在你已经发布了你的代码,显然有什么问题 - 你double在这段代码中无缘无故地通过:

totalResult = Convert.ToDouble(tb2.Text) + resultAdd;
total = tbTotal.Text.ToCharArray();
string x = Convert.ToString(totalResult);
tbTotal.Text = x;
totvalue = BigInteger.Parse(x);
Run Code Online (Sandbox Code Playgroud)

你不是试图处理double价值 - 你试图处理整数,所以做所有事情BigInteger.更改resultAddBigInteger过,然后你需要的是:

BigInteger result = BigInteger.Parse(tb2.Text) + resultAdd;
Run Code Online (Sandbox Code Playgroud)

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