【发布时间】:2017-11-17 15:02:22
【问题描述】:
我正在构建具有 3 个文本框的 C# WinForms 应用程序。前两个取值,计算后在第三个文本框中显示值。它必须在文本框中,以便用户在认为计算错误时可以更改值。一切正常,但是当我在 Windows 7 上运行应用程序时出现巨大错误,它计算出(例如)2 乘以 2.15 是 430。为什么会这样?我尝试在那台计算机上安装最新的 .Net 框架,但仍然无法正常工作,经过研究,我没有进一步的想法。
num1 = num2 = sum = 0;
if (tbNum1.Text.Contains(","))
{
tbNum1.Text = tbNum1.Text.Replace(",", ".");
}
double.TryParse(tbNum1.Text, out num1);
if (tbNum2.Text.Contains(","))
{
tbNum2.Text = tbNum2.Text.Replace(",", ".");
}
double.TryParse(tbNum2.Text, out num2);
sum = num1 * num2;
sum = Math.Round(sum, 2);
tbSum.Text = sum.ToString();
此外,显示 WinForm 时还会出现另外两个问题。 首先是面板的大小和位置与我以编程方式设置的不同。 其次是(我想这是我的错,因为我可能做错了)所有面板都显示得很慢。我所拥有的就像 6 个具有特定尺寸和 6 个按钮的面板。根据按下的按钮,我将所有可见的面板设置为假,只有正确的面板可见为真。但它加载非常缓慢。你有什么建议吗 ?提前非常感谢!
【问题讨论】:
-
我无法重现您的问题,可能是因为您发布的代码中没有显示导致问题的原因。在调试器中跟踪代码的每一行,将帮助您将问题代码归零。您应该注意到
2 * 2.15 = 4.3是您获得的答案的1/100th(需要考虑) -
数字格式一般遵循windows默认的,所以不要用
Replace,用你的TryParse它会修复数字1 -
@Vikhram 没有使用英文数字格式,如果是的话,它会将逗号替换为空
-
您确定在 Windows 7 机器上正确设置了文化吗?我听起来好像无法识别文本框中的小数点分隔符。究竟是什么,你进入那里?您输入的是
2和2.15还是2和2,15(注意最后一个条目中的逗号)。 -
检查您的操作系统文化,以及您在文本框中输入的内容