У меня есть эта проблема с начала с резкой книгой это для преобразования между Фаренгейтом и Цельсия.Конверсия между Фаренгейтом и Цельсия ВЫПУСК
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!?";
может быть, я что-то не так с приказом Ops, но я думаю, что это правда? спасибо за помощь.
Это сработало, это cel = ((float) 5/9) * (fahr-32); сработали? обрабатывает ли он 5/9 как фракцию (рациональное число), если числитель меньше знаменателя, или если он является дробью с целыми числами только как в num, так и в значении? – user527825
В операции деления по крайней мере один операнд должен иметь тип float, чтобы весь результат рассматривался типа float. Размер чисел не имеет значения. Используя (float) 5, я фактически конвертирую целое число 5 в значение с плавающей точкой 5.0, затем разделим его на целое число 9. Так как 5.0 теперь явно плавает, результатом будет число с плавающей точкой. –
Небольшая записка; все это обрабатывается компилятором, а не средой исполнения - нет времени выполнения. (float) 7 идентична 7F –