Just nu i M3-nätverket
Jump to content

Formler (temperaturomvandling)


ScIeNcE_ErRoR

Recommended Posts

ScIeNcE_ErRoR

Hej,

 

Jag håller på att göra ett program i Visual C# .NET som omvandlar mellan olika temperaturer. Mitt problem är när jag försöker att konvertera från en temperatur till en annan, och får fel slutresultat. Formlerna är hämtade från wikipedia.

 

Om jag konverterar 0 Kelvin så får jag resultatet 559,725 Delisle (Rätt).

 

Formel: De = (373,15 - K) * 3 / 2. Resultat: 559,725 Delisle.

 

Om jag konverterar 559,725 Delisle så får jag -5,6843...osv Kelvin (Fel).

 

Formel: K = 373,15 - De * 2 / 3. Resultatet SKA bli 0 K, men blir inte det.

 

Om jag slår ut samma formel på en miniräknare (Texas Instruments Ti-30X IIB) så blir resultatet 0 Kelvin, som det ska vara.

 

Så min fråga är om någon kan se något fel i formeln/formlerna, eller om det är Visual Studio (alternativt Texas Instruments miniräknare) som räknar fel? Min gissning är Visual Studio, men det vore i alla fall bra att veta om formeln i sig själv är rätt (bakvänd). Formeln räknar nämligen rätt på andra temperaturer, om inte wikipedia (som trots allt är gratis) har felaktiga temperatur referenser. Tack på förhand och hoppas någon kan verifiera formeln.

 

Link to comment
Share on other sites

ScIeNcE_ErRoR

Jag provade den formeln också, men tyvärr med samma resultat. Kelvin blev -5,6843...osv. Tack för hjälpen dock.

 

Link to comment
Share on other sites

Jag stänger den här tråden och hänvisar till ursprungstråden i C#-forumet.

//eforum.idg.se/viewmsg.asp?entriesid=950454

 

Cecilia - Moderator för Matematik

 

Link to comment
Share on other sites

ScIeNcE_ErRoR

Koden är väldigt enkel, bara normal kod.

 

De = Convert.ToDouble(Input);
K = 373.15 - De * 2 / 3;
OutputK = Convert.ToString(K);
OutputK.Text = OutputK;

 

Vanlig, enkel kod. Hade jag använt Float istället för Double, så kan jag få varningen "Possible loss of data" i konverteringen, men Double hanterar stora tal och många decimaler. Min gissning är att det är någonting i Visual Studio, men samtidigt räknar formeln rätt på andra tal om nu inte wikipedia har felaktig information.

 

Men jag har provat andra lösningar också, så som Delisle till Celsius och vidare till Kelvin, och jag får fortfarande samma negativa resultat, vilket jag tycker är omöjligt. -273,15 + 273,15 kan aldrig bli -5,6843... hur mycket jag än försöker. Så mest troligt ett Visual Studio fel någonstans. Tack för hjälpen i alla fall.

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.


×
×
  • Create New...