+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    Jan 2010
    Ort
    Ginsheim-Gustavsburg
    Beiträge
    114

    Question Float Werte addieren, komisches verhalten.

    Hallo zusammen,
    mir ist gerade etwas komisches aufgefallen und ich bin mir nicht sicher ob es wichtig ist.

    Wenn man eine Float Variable die auf 0.0 steht drei mal um 0.1 erhöht (Script im Anhang), dann ergibt das nicht 0.3 sondern 0,30000000000000004.

    Wenn man das Script nur einmal, zweimal, viermal oder auch fünfmal durchführt passiert das nicht!
    Update. Beim achten mal ergibt es 0,7999999999999999.

    Aktuell läuft bei mir IP-Symcon 5.4, Windows x64, 30.04.2020, 976df559a312.

    Gruß, Raul.

    PHP-Code:
    $FloatVar GetValueFloat(51818);
    SetValueFloat(51818,$FloatVar 0.1); 
    Geändert von luar (03.05.20 um 23:40 Uhr)

  2. #2
    Registriert seit
    Sep 2014
    Ort
    Limeshain (Hessen)
    Beiträge
    5,423

    Ich kann das weder mit der aktuellen 5.3 Stable noch mit der aktuellen 5.4 Beta nachstellen. Jeweils auf einer Ubuntu VM.

    Grüße,
    Chris
    IP-Symcon Module >> www.bayaro.net << Verfügbare Module: BatterieMonitor, BundesligaTabelle, Enigma2BY, HeizölPreise, Helios, Horoskop, HostMonitor, IPSInformations, MELCloud, Müllabfuhr, PJLink, RSS, TankerkönigSpritpreise, xREL
    IPS Unlimited, ~1200 Scripte, ~7000 Variablen

  3. #3
    Registriert seit
    Apr 2017
    Beiträge
    937

    Damit ist doch in jeder Programmiersprache und auf jeder CPU zu rechnen, daß Float eben nicht "exakt" sind sondern solche Artefakte auf den letzten Nachkommastellen auftreten können. Ich würde das im Profil auf die gewünschte Nachkomma-Darstellung anpassen oder bei Textausgabe mit sprintf.
    Viele Grüße
    Volker

    KNX-TP, KNX-RF

  4. #4
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,904

    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Hikvision DS-2CD2686G2-IZS | Echo Dot + Show | Stall.biz AirSniffer | Vaillant eBUS | Intel NUC i3 | IPS V5.5 Beta

  5. #5
    Registriert seit
    Jan 2010
    Ort
    Ginsheim-Gustavsburg
    Beiträge
    114

    Mir ist schon klar das man bei Berechnungen (multiplizieren und dividieren) Probleme beim runden bekommen kann, aber bei simpler Addition!?

    Und beim zwölften mal erhält man wie zu erwarten 1.2

    Name:  Float.PNG
Hits: 107
Größe:  53.8 KB

    Aber wenn ihr sagt das es normal ist, dann gebe ich mich damit auch zufrieden!

    Gruß, Raul.

  6. #6
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    24,122

    Ja, das kann aufgrund der Kodierung passieren. Wikpedia erklärt das recht technisch: https://de.wikipedia.org/wiki/Gleitkommazahl (insbesondere IEEE754)

    paresy

  7. #7
    Registriert seit
    Nov 2015
    Beiträge
    1,734

    Moin Raul,

    nicht nur Berechnungen sondern auch Vergleiche mit Floatwerten sind äußerst kritisch wie du hier PHP kleiner als (hat die Funktion von kleiner/gleich) sehen kannst.

    Falls es ein Trost für dich ist, über diese Probleme sind schon ganze Generationen von Programmierern gestolpert Bei Tests wurden gerne Aufgaben mit Floatwerten verwendet um zu erkennen, ob ein Bewerber wirklich die Programmiersprache beherrscht.

    Gruß
    Hans
    Entwicklung: Win 10 Pro x64 | Produktiv: Win 10 Pro x64 auf Intel NUC 5PPYH | IPS 5.5 | piVCCU3 auf Pi 3 / Pi 4 + div. HM Geräte | Harmony Hub | IPSStudio 5.x und 4.1 | Clients: Windows mit Iiyama T2735MSC-B2 | iPad | iPhone

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 16.01.20, 18:06
  2. Komisches Verhalten bei http_get
    Von JPaeper im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 11.12.10, 21:57
  3. Komisches Verhalten nach Stromausfall!
    Von Hinti im Forum WebFront
    Antworten: 6
    Letzter Beitrag: 06.05.10, 15:30
  4. Komisches Verhalten des DUGTools
    Von Frozengun im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 18.02.10, 16:12