Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Addition von 0.01 ist falsch

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Addition von 0.01 ist falsch

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sandmanyz last edited by

      Hallo,

      lasse ich per Blockly mehrfach 0.01 addieren, kommen immer krumme Zahlen raus. Wenn ich nun die Runde-Funktion verwende, ist das Ergebnis irgendwann falsch. Einige Beispiele.

      • 6 mal 0.01 addiert, Ergebnis 0.060000000000000005 -> gerundet 0.6 = OK
      • 9 mal 0.01 addiert, Ergebnis 0.09999999999999999 -> gerundet 0.10 = FALSCH, richtig wäre 0,09
      • 11 mal 0.01 addiert, Ergebnis 0.11999999999999998 -> gerundet 0.12 = FALSCH, richtig wäre 0,11

      So sieht die Rechnung ohne RUNDEN aus....
      29144939-75c6-42c5-a919-56b1e7f6b9b5-grafik.png

      So ein Thema gab es hier schon mal (siehe hier). Leider wurde das Problem aber nur durch das Runden gelöst.

      Kann man das Problem irgendwie lösen?

      Viele Grüße

      Homoran UncleSam 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Sandmanyz last edited by

        @Sandmanyz sagte in Addition von 0.01 ist falsch:

        Kann man das Problem irgendwie lösen?

        Ja, durch runden 😂

        Liegt an den Fließkommaberechnungen - Ist so!

        S 1 Reply Last reply Reply Quote 0
        • S
          Sandmanyz @Homoran last edited by

          @Homoran
          Das ist leider wenig hilfreich. Ich benötige ein mathematisch korrektes Ergebnis.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Sandmanyz last edited by

            @Sandmanyz sagte in Addition von 0.01 ist falsch:

            Ich benötige ein mathematisch korrektes Ergebnis.

            ???
            und dafür geht es dir um die 25. Kommastelle
            Wenn du jeden rechenschritt korrekt rundest, bekommst du auch ein korrektes Ergebnis
            Nur das scheingenaue Ergebnis runden ist falsch

            S 1 Reply Last reply Reply Quote 0
            • S
              Sandmanyz @Homoran last edited by

              @Homoran
              Das mit dem Runden ist eben nicht die Lösung. Siehe meine Beispiele im ersten Beitrag.

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Sandmanyz last edited by

                @Sandmanyz sagte in Addition von 0.01 ist falsch:

                @Homoran
                Das mit dem Runden ist eben nicht die Lösung. Siehe meine Beispiele im ersten Beitrag.

                da rundest du ja auch nur das falshe Endergebnis, nicht jeden rechenschritt

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Homoran last edited by paul53

                  @Homoran sagte in Addition von 0.01 ist falsch:

                  da rundest du ja auch nur das falshe Endergebnis, nicht jeden rechenschritt

                  Man sollte immer nur das Endergebnis runden.

                  @Sandmanyz sagte in Addition von 0.01 ist falsch:

                  9 mal 0.01 addiert, Ergebnis 0.09999999999999999 -> gerundet 0.10 = FALSCH, richtig wäre 0,09
                  11 mal 0.01 addiert, Ergebnis 0.11999999999999998 -> gerundet 0.12 = FALSCH, richtig wäre 0,11

                  Das kann ich nicht nachvollziehen, denn ich erhalte immer das richtige Ergebnis bei diesem Test:

                  Blockly_temp.JPG

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @paul53 last edited by

                    @paul53 sagte in Addition von 0.01 ist falsch:

                    Man sollte immer nur das Endergebnis runden.

                    eigentlich ja!

                    Kann es hier ein async Problem sein, da er ja einen Datenpunkt über einen Adapter aktualisiert?

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Homoran last edited by paul53

                      @Homoran sagte:

                      Kann es hier ein async Problem sein, da er ja einen Datenpunkt über einen Adapter aktualisiert?

                      Dann wäre der Zählerstand zu klein, aber nicht zu groß.
                      Man sollte aber immer mit Variablen (ohne Rundung) arbeiten und den Wert gerundet in den Datenpunkt schreiben.

                      1 Reply Last reply Reply Quote 1
                      • UncleSam
                        UncleSam Developer @Sandmanyz last edited by UncleSam

                        @Sandmanyz Wenn wir hier über die Theorie reden, lässt sich das Problem nicht lösen. Fliesskommazahlen werden genau aus diesem Grund in der Informatik mit sehr viel Vorsicht verwendet.

                        Wenn du das Problem lösen willst, musst du das Problem "ändern." Sprich: du musst anders an das Problem heran gehen.

                        Was ist denn dein eigentliches Problem? Ich nehme nicht an, dass du aus lauter Freude mal etwas Zahlen addierst.

                        Ein Vorschlag: rechne mit Ganzzahlen (0.01 ~= 1) und verwende einen alias, der genau diesen Wert noch dividiert (/ 100).

                        paul53 1 Reply Last reply Reply Quote 1
                        • paul53
                          paul53 @UncleSam last edited by paul53

                          @UncleSam sagte:

                          rechne mit Ganzzahlen

                          Ich würde es immer so machen:

                          Blockly_temp.JPG

                          S 1 Reply Last reply Reply Quote 0
                          • S
                            Sandmanyz @paul53 last edited by

                            @paul53

                            Perfekt 👍 😊

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            793
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            blockly javascript
                            4
                            12
                            682
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo