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