Avatar billede razzia83 Nybegynder
22. januar 2013 - 02:45 Der er 2 kommentarer og
1 løsning

Problemer med float i Python

Jeg sidder og leger med nogle sensorere sammen med min Raspberry Pi.

Koden kan ses her: http://pastebin.com/1J5RgEhy

Jeg er godt klar over, at jeg kan rydde ret meget op i koden og minimere antallet af metoder- det kommer senere. :-)

Desværre sker det ind i mellem, at sensorne giver en forkert måling.  Måske hver 5. eller 6. time har den målt -0.1, selvom temperaturen er omkring 20 grader.

Problemet kan ses her: https://cosm.com/feeds/99227
Det er mest synligt i Patio.

Når en sensor aflæses, giver den data i stil med dette:
5a 01 4b 46 7f ff 06 10 a3 : crc=a3 YES
5a 01 4b 46 7f ff 06 10 a3 t=21625

Temperaturen er den sidste del. I metoden isolerer jeg 21625 og dividerer med 1000 og fjerner de sidste par decimaler. Temp = 21.6 grader.

På linje 63 og frem har jeg nogle if sætninger, hvor jeg sammenligner de målte temperaturer med min variabel "errorTemp".

Tanken er, at hvis temperaturen matcher "errorTemp", så henter den lige temperaturen forfra.

Desværre bliver fejlen aldrig fanget i If sætningen. Jeg har en idé om, at det skyldes at temperaturen er en float og selvom jeg fjerner de sidste decimaler, så figurer den fulde værdi stadigvæk i systemet et sted.

Er der en som har et bud på, hvordan jeg kan fjerne den forkerte måling?
Avatar billede arne_v Ekspert
22. januar 2013 - 04:15 #1
Kan du ikke erstatte:

if temp1 == errorTemp:

med:

if (temp1 - errorTemp) < 0.001:

?
Avatar billede razzia83 Nybegynder
07. april 2013 - 00:18 #2
Jeg droppede projektet igen før jeg fik kigget nærmere på dit svar - beklager. Hvis du vil have point, så opret et svar :)
Avatar billede arne_v Ekspert
07. april 2013 - 03:02 #3
tjo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester