我正在Visual Studio中用C#开发一个应用程序,按下按钮时计算不正确。让我解释一下,数字5 5 5
结果是70
,但当数字为5.0 5.0 5
时,结果为475
。它计算数字,就像它们不是小数。如果有人可以帮助我那会很棒。谢谢!
private void sum_Click(object sender, RoutedEventArgs e)
{
double n1;
double n2;
double n3;
if (double.TryParse(num1.Text.Replace(".", ","), out n1)
&& double.TryParse(num2.Text.Replace(".", ","), out n2)
&& double.TryParse(num3.Text.Replace(".", ","), out n3))
{
double sum = n1 * 4 + n2 * 5 + n3 * 5;
String m = Convert.ToString(sum);
sum1.Text = m;
}
else
{
sum1.Text = "Unesi sve!";
}
}
答案 0 :(得分:1)
您正在.
更改,
。当前,
中的NumberGroupSeparator
肯定是CultureInfo
。因此,5,0
将被解析为50
:
50 * 4 + 50 * 5 + 5 * 5 == 475
不要替换.
,您的代码就可以了:
if (double.TryParse(num1.Text, out n1) &&
double.TryParse(num2.Text, out n2) &&
double.TryParse(num3.Text, out n3)) ...
如果您想使用,
作为小数分隔符:
var culture = CultureInfo.CurrentCulture.Clone() as CultureInfo;
culture.NumberFormat.NumberDecimalSeparator = ",";
if (double.TryParse(num1.Text, NumberStyles.Float, culture, out n1) &&
double.TryParse(num2.Text, NumberStyles.Float, culture, out n2) &&
double.TryParse(num3.Text, NumberStyles.Float, culture, out n3)) ...
答案 1 :(得分:0)
这应该可以正常工作double.TryParse()处理逗号和句号:
private void sum_Click(object sender, RoutedEventArgs e)
{
double n1;
double n2;
double n3;
if (double.TryParse(num1.Text, out n1)
&& double.TryParse(num2.Text, out n2)
&& double.TryParse(num3.Text, out n3))
{
double sum = n1 * 4 + n2 * 5 + n3 * 5;
sum1.Text = sum.ToString();
}
else
{
sum1.Text = "Unesi sve!";
}
}
<强>更新强>
Here是一个使用字符串作为输入而不是文本框的小例子