Пересчет Фаренгейта и Цельсия
У меня есть эта проблема с самого начала c острая книга это для преобразования между градусами Фаренгейта и Цельсия.
private void button1_Click(object sender, EventArgs e)
{
float fahr, cel;
if (Celsius.Checked == true)
{
fahr = float.Parse(textBox1.Text);
cel = (5/9)*(fahr-32);
richTextBox1.Text = "The Degree in Celsius is:" + cel.ToString() + Environment.NewLine + "cool isn't it!?";
}
else if (Fahrenheit.Checked == true )
{
cel = float.Parse(textBox1.Text);
fahr = ((9 * cel)/5)+ 32;
richTextBox1.Text = "The degree in Fahrenheit is:" + fahr.ToString() + Environment.NewLine + "cool is it!?";
}
когда я хочу получить Цельсий от Фаренгейта, он продолжает давать мне 0, хотя формула кажется мне верной. что здесь не так?
потому что я думаю, что проблема заключается здесь:
if (Celsius.Checked == true)
{
fahr = float.Parse(textBox1.Text);
cel = (5/9)*(fahr-32);
richTextBox1.Text = "The Degree in Celsius is:" + cel.ToString() + Environment.NewLine + "cool isn't it!?";
может быть, у меня что-то не так с Order of Ops, но я думаю, что это правда? Спасибо за помощь.
2 ответа
Решение
Попробуйте поставить еще один актерский состав, просто чтобы быть уверенным, вот так:
cel = ((float)5/9)*(fahr-32);
Скорее всего, 5/9 оцениваются как целые и дают 0. Другой вариант будет выглядеть так:
cel = (5f/9f)*(fahr-32);
Пытаться
5.0F/9.0F
В противном случае вы используете целочисленную арифметику, где 5/9 - ноль.