计算不正确

时间:2016-03-23 19:29:54

标签: c# visual-studio windows-phone-8.1

我正在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!";
    }
}

2 个答案:

答案 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是一个使用字符串作为输入而不是文本框的小例子