【发布时间】:2014-01-23 15:23:58
【问题描述】:
我有一个转换长度的 c# 应用程序。如果用户输入以点分隔的数字 (3.45),则应用程序可以正常工作并给出正确的结果,但如果用户输入逗号 (3,45),则会给出错误的结果。有谁知道我如何解决这个问题
private void butCal_Click(object sender, EventArgs e)
{
// initialising and declaring variables
double miles, kilometres, feet, metres, inches, centimetres = 0;
// the if statements initiates an event handler to select items from the conversions (combobox) to do conversion
if (Conversions.Text == "Miles to Kilometres")
{
if (!double.TryParse(txtNumber.Text, out miles)) // verifies that the string entered is a number
{
MessageBox.Show("Please enter a number !"); // displays message if no number is entered
}
// Logic for doing calculations
kilometres = miles * 1.6093;
txtAnswer.Text = kilometres.ToString("N2") + " Kilometres"; // displays the answer and rounds it off to two decimals
txtAnswer.Visible = true;
txtAnswer.Enabled = false;
lblAnswer.Text = " Answer = ";
lblAnswer.Visible = true;
}
else if (Conversions.Text == "Kilometres to Miles")
{
if (!double.TryParse(txtNumber.Text, out kilometres))
{
MessageBox.Show("Please enter a number.");
}
miles = kilometres * 0.621;
txtAnswer.Text = miles.ToString("N2") + " miles ";
txtAnswer.Visible = true;
txtAnswer.Enabled = false;
lblAnswer.Text = " Answer = ";
lblAnswer.Visible = true;
}
else if (Conversions.Text == "Feet to Metres")
{
if (!double.TryParse(txtNumber.Text, out feet))
{
MessageBox.Show("Please enter a number.");
}
metres = feet * 0.3048;
txtAnswer.Text = metres.ToString("N2") + " metres ";
txtAnswer.Visible = true;
txtAnswer.Enabled = false;
lblAnswer.Text = " Answer = ";
lblAnswer.Visible = true;
}
else if (Conversions.Text == "Metres to Feet")
{
if (!double.TryParse(txtNumber.Text, out metres))
{
MessageBox.Show("Please enter a number.");
}
feet = metres * 3.280839895;
txtAnswer.Text = feet.ToString("N2") + " Ft ";
txtAnswer.Visible = true;
txtAnswer.Enabled = false;
lblAnswer.Text = " Answer = ";
lblAnswer.Visible = true;
}
else if (Conversions.Text == "Inches to Centimetres")
{
if (!double.TryParse(txtNumber.Text, out inches))
{
MessageBox.Show("Please enter a number.");
}
centimetres = inches * 2.54;
txtAnswer.Text = centimetres.ToString("N2") + " cm ";
}
else if (Conversions.Text == "Centimeters to Inches")
{
if (!double.TryParse(txtNumber.Text, out centimetres))
{
MessageBox.Show("Please enter a number.");
}
inches = centimetres * 0.3937;
txtAnswer.Text = inches.ToString("N2") + " Inches ";
txtAnswer.Visible = true;
txtAnswer.Enabled = false;
lblAnswer.Text = " Answer = ";
lblAnswer.Visible = true;
}
}
private void button1_Click(object sender, EventArgs e)
{
// resetting all labels, text fields and the conversion (combobox)
Conversions.SelectedIndex = -1;
txtNumber.Clear();
txtAnswer.Clear();
butCal.Visible = false;
// Hidding text fields and labels until they are called
txtAnswer.Visible = false;
txtNumber.Visible = false;
lblAnswer.Visible = false;
lblNumber.Visible = false;
}
private void butExit_Click(object sender, EventArgs e)
{
Close(); // exits the application
}
【问题讨论】:
-
你不能在开头用
.替换,。请详细说明错误的结果 -
@NitinVarpe - 不,因为
3,100不 表示3.100,它表示3100(或其他方式,取决于你碰巧住在哪里).. ..
标签: c#