我正在创建一个计算器,我遇到了一个问题,如果有人能帮助我,那将是非常感激的。
Ok,当到达calculatearea中的某个值时。文本,它崩溃的计算器与一个未处理的异常错误"系统。OverflowException:值对于小数来说太大或太小。"取值为"4.8828125000000004E+29"。但我希望它能像Windows计算器那样运行,直到出现"9.99999999999999999999999999999969e +9919";然后输入"溢出";当它到达+10000
代码→
private void calculateAera_TextChanged(object sender, EventArgs e)
{
if (calculateAera.Text == "" || calculateAera.Text == "0") return;
decimal number;
number = decimal.Parse(calculateAera.Text, System.Globalization.NumberStyles.Currency | System.Globalization.NumberStyles.AllowExponent);
calculateAera.Text = number.ToString("#,#");
calculateAera.SelectionStart = calculateAera.Text.Length;
}
如果您需要更大的范围,decimal
根本不是适合您的工具。如果你想保持十进制的精度,c#并没有内置更大的东西。
你需要找一个不同的类型或者自己写。没有什么神奇的解决方案只取Calculator中使用的类型。计算器有它自己的原因。