C# 如何计算一个非常大的数字数组而不在输出中得到NaN?
我做了一个计算器,可以计算小数字,但当结果太大时,它会返回NaNC# 如何计算一个非常大的数字数组而不在输出中得到NaN?,c#,.net,calculator,nan,C#,.net,Calculator,Nan,我做了一个计算器,可以计算小数字,但当结果太大时,它会返回NaN List<string> memory = new List<string> { }; string display = ""; while (display.Contains("%") == false) { string line = ReadLine(); display = line; memory.Add(line); } float result = float.Pa
List<string> memory = new List<string> { };
string display = "";
while (display.Contains("%") == false)
{
string line = ReadLine();
display = line;
memory.Add(line);
}
float result = float.Parse(memory[0]);
for (int i = 1; i < memory.Count; i++)
{
string temp = memory[i];
char[] _temp = temp.ToCharArray();
_temp = _temp.Where(x => x > _temp[0]).ToArray();
float num = float.Parse(string.Join("", _temp));
if (temp.Contains("+") == true) result += num;
else if (temp.Contains("-") == true) result -= num;
else if (temp.Contains("*") == true) result *= num;
else if (temp.Contains("/") == true) result /= num;
else if (temp.Contains("%") == true) result %= num;
}
我在一个新的读线中输入每个数字,前面有数学符号。
如果你用这些数字测试它,请注意
我到处都找过了,找不出解决这个问题的方法,所以它可以返回一个真实的数字
有人知道我能做些什么来解决这个问题吗?以下限制适用:
- 浮点:7位(32位)
- 双精度:15-16位(64位)
- 十进制:28-29位有效数字(128位)
<>你可能想考虑使用. 请参阅“797*2+38*212”给定您的解析器,我认为您没有考虑关联-797*2应在一侧解析,另一侧加上38*212,并将这两个值相加。我相信你的计算器是从左到右读数,并不认为这是误导
Decimal
的范围比Double小得多,但其范围更精确。
797 * 2 + 38 * 212 * 275 * 806 * 67 * 9939 + 7 + 74 + 515 + 610 * 516 * 6921
+ 4 * 2 * 494 * 3153 * 8 + 2501 * 769 + 4 * 2472 + 1 * 21 * 6535 + 30 + 26
+ 44 + 240 + 88 * 1111 * 817 * 1576 + 551 * 535 + 9150 + 36 * 85 * 4598
* 9276 * 766 + 584 + 5 * 1 + 7 + 45 * 8152 % 7984