我正在尝试创建一个计算器,其中有两个用于数字输入的文本框,最后一个用于显示数字.但是,我想这样做,它将至少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.更改resultAdd到BigInteger过,然后你需要的是:
BigInteger result = BigInteger.Parse(tb2.Text) + resultAdd;
Run Code Online (Sandbox Code Playgroud)
无需进行任何其他字符串转换.
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |