C# problem med division i en formel

Trädvy Permalänk
Medlem
Plats
vetlanda
Registrerad
Okt 2010

C# problem med division i en formel

Hej, jag arbetar just nu med en upgift där jag ska konvertera Fahrenheit till Celsius med en metod.
Formeln jag ska använda mig av är: celsius = (fahrenheit-32) * 5/9

Än sålänge har jag gjort såhär

static double celsius_converter(int int_Utemp) { int int_Temp = ((int_Utemp - 32) * 5/9); double double_ConvertedTemp = Convert.ToDouble(int_Temp); return double_ConvertedTemp; }

Problemet är att när den delar blir det inte rätt, eftersom att den inte räknar med decimaler. Jag har försökt att lägga in (double) i parentes innan int_Utemp såhär:

static double celsius_converter(int int_Utemp) { int int_Temp = (((double)int_Utemp - 32) * 5/9); double double_ConvertedTemp = Convert.ToDouble(int_Temp); return double_ConvertedTemp; }

Men då säger programmet ifrån. Någon som vet hur jag skulle kunna tänkas gå vidare?

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Aug 2005

static Decimal ToCelsius(int fahrenheit) { return (fahrenheit-32) * 5M / 9M; } static Decimal ToCelsius(int fahrenheit) { return (fahrenheit-32) * 5f / 9f; } static Decimal ToCelsius(int fahrenheit) { return (fahrenheit-32) * 5.0 / 9.0; }

.0 = double
f = double
M = decimal

Anledningen till att du får problem är att delsatsen som räknar ut decimaler avrundas till en Int (heltal).
I detta fallet är det 5 delat med 9. Sen så sparar du även resultatet i ett heltal, vilket gör att den avrundas ännu en gång.

Trädvy Permalänk
Medlem
Plats
vetlanda
Registrerad
Okt 2010
Skrivet av TheBorg:

static Decimal ToCelsius(int fahrenheit)
{
return (fahrenheit-32) * 5M / 9M;
}

static Decimal ToCelsius(int fahrenheit)
{
return (fahrenheit-32) * 5f / 9f;
}

static Decimal ToCelsius(int fahrenheit)
{
return (fahrenheit-32) * 5.0 / 9.0;
}

.0 = double
f = double
M = decimal

Anledningen till att du får problem är att delsatsen som räknar ut decimaler avrundas till en Int (heltal).
I detta fallet är det 5 delat med 9. Sen så sparar du även resultatet i ett heltal, vilket gör att den avrundas ännu en gång.

Tack för svar! Det löste sig nu.