Seite 3 von 3 ErsteErste 123
Ergebnis 31 bis 43 von 43
  1. #31
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von ein schlauer Beitrag anzeigen
    EDIT: Ok, ich hatte grad einen Knoten im Hirn. print zeigt nicht alle Nachkomastellen an
    Endlich. Ich dachte schon wir machen noch eine Runde

    Und genau das wollte ich zeigen. Man hat - auch wenn man es denkt - nicht immer eine Ganzzahl vor sich. Zumindest in Perl. Man muss sich diese stets selbst erzeugen.
    In JS habe ich das nicht genauer untersucht.

    Zitat Zitat von hesst Beitrag anzeigen
    eigentlich nicht, wir haben nie 0.57. wenn aber doch, warum nehmen wir nicht die 2 stellen nach dem "."?
    In jeder normale Eingabemaske einer kaufmännischen Anwendung würde man als Eingabe 0.57 oder 0,57 erwarten, wenn jemand 57 Cent ausdrücken will.
    Und was meinst du mit "warum nehmen wir nicht die 2 Stellen nach dem ."?

    Zitat Zitat von hesst Beitrag anzeigen
    woher soll print wissen, in welcher genauigkeit du den wert anzeigen willst?
    Das ist nicht die Frage.
    Ich stelle sie nochmal: Wenn eine Variable den Wert 56.99999999999946373..... irgendwas hat, wieso zeigt in meinem Beispiel das print ohne jegliche Formatierung trotzdem 57 an? Dass mit Formatierung printf oder sprintf 57 kommt ist ja ok. Aber wieso sehe ich ohne Formatierung nicht den tatsächlichen Wert?

  2. #32
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Richtig runden.

    Zitat Zitat von hesst Beitrag anzeigen
    dann müsste aber DBL_DIG aber 15 sein und FLT_DIG 7
    und perl nutzt doch sicher auch double, oder? damit hat man wider min. 15 unterscheidbare ziffern und print müsste 56.999999.. anzeigen.
    Das sind die Einstellung in C (womit die aussage, das C "genauer" wäre auch widerlegt ist), Perl verwendet tatsächlich andere Werte Re^3: float values and operators
    https://metacpan.org/source/RJBS/perl-5.18.0/perl.h

  3. #33
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von ein schlauer Beitrag anzeigen
    womit die aussage, das C "genauer" wäre auch widerlegt ist
    Ja, das habe ich daraus auch gelernt.

  4. #34
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Richtig runden.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Endlich. Ich dachte schon wir machen noch eine Runde
    ja, hast ja gerade eine neue angefangen.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Und genau das wollte ich zeigen. Man hat - auch wenn man es denkt - nicht immer eine Ganzzahl vor sich. Zumindest in Perl.
    man weiß, wann man gleitkommazahlen hat und wann nicht. in nicht typisierten sprachen nicht so eindeutig, aber wenn man .57 * 100 schreibt weiß man, daß man eine gleitkommazahl hat!

    Zitat Zitat von mikdoe Beitrag anzeigen
    In jeder normale Eingabemaske einer kaufmännischen Anwendung würde man als Eingabe 0.57 oder 0,57 erwarten, wenn jemand 57 Cent ausdrücken will.
    Und was meinst du mit "warum nehmen wir nicht die 2 Stellen nach dem ."?
    warum nehmen wir dann nicht aus dem string der eingabemaske die 57 (2 Stellen nach dem .)?
    man darf nur mit den 0.57 nicht rechnen


    Zitat Zitat von mikdoe Beitrag anzeigen
    Aber wieso sehe ich ohne Formatierung nicht den tatsächlichen Wert?
    weil 56.99999 mit 6 Stellen genauigkeit 57 ist.
    Geändert von mikdoe (05-06-2013 um 13:33 Uhr) Grund: Quote repariert

  5. #35
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von hesst Beitrag anzeigen
    man weiß, wann man gleitkommazahlen hat und wann nicht.
    Dass das jeder weiß glaube ich nicht. Daher hatte ich ganz am Anfang des Ursprungssthread darauf hingewiesen.
    Jeder Hinz und Kunz macht heutzutage Webanwendungen. Wenn man die alle fragen würden, ob sie das wissen, was käme da raus?

    Zitat Zitat von hesst Beitrag anzeigen
    in nicht typisierten sprachen nicht so eindeutig, aber wenn man .57 * 100 schreibt weiß man, daß man eine gleitkommazahl hat!
    OK, wenn du meinst.
    Eine Umfrage würde mich wirklich interessieren.
    "Wussten Sie, dass 0.57 x 100 nicht 57 ergibt, obwohl print 57 ausgibt?"
    Geile Fragestellung

    Zitat Zitat von hesst Beitrag anzeigen
    weil 56.99999 mit 6 Stellen genauigkeit 57 ist.
    Welche Aussage triffst du mit diesem Satz? Wie kommst du auf ausgerechnet 6 Stellen?

  6. #36
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Richtig runden.

    Zitat Zitat von ein schlauer Beitrag anzeigen
    Das sind die Einstellung in C (womit die aussage, das C "genauer" wäre auch widerlegt ist),
    in c ist das genauso wie in perl wie in irgendetwas anderem. maximal kann ich mich in c entscheiden 32 Bit oder 64 Bit darstellung zu nehmen. irgendeine andere sprache hat vielleicht noch 128 Bit darstellung. Ich glaube nicht, dass irgendeine sprache sich nicht an den standard für gleitkommadarstellung hält.
    damit hat man aber 7.22 Dezimalstellen für 32 Bit und 15.95 für 64 bit die als binär-gleitkommazahl verlustfrei speicherbar sind


    Zitat Zitat von mikdoe Beitrag anzeigen
    Welche Aussage triffst du mit diesem Satz?
    das diese zahl 57 ist in der geforderten genauigkeit!
    in der physikarbeit hast du doch auch nicht diskutiert, wenn das ergebniss mit 2 nachkommastellen angegeben werden sollte.
    so ähnlich ist es mit der genauigkeit.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Wie kommst du auf ausgerechnet 6 Stellen?
    das hatte der schlaue mal gepostet, aber auch schon wieder geändert.
    Geändert von mikdoe (05-06-2013 um 14:00 Uhr) Grund: Namen in den Zitaten korrigiert

  7. #37
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von hesst Beitrag anzeigen
    das diese zahl 57 ist in der geforderten genauigkeit!
    Mir geht es darum, dass eine Variable u.U. nicht den Wert enthält, den man aufgrund der print Ausgabe annimmt.
    Haben wir jetzt aber ausreichend dargestellt, kann glaube ich beendet werden

    Zitat Zitat von hesst Beitrag anzeigen
    in der physikarbeit hast du doch auch nicht diskutiert, wenn das ergebniss mit 2 nachkommastellen angegeben werden sollte.
    Was hat das jetzt hiermit zu tun?

    Zitat Zitat von hesst Beitrag anzeigen
    das hatte der schlaue mal gepostet, aber auch schon wieder geändert.
    print in Perl zeigt mehr als 6 Stellen an. Also könnte es das Ergebnis von .57 x 100 eigentlich auch korrekt anzeigen.
    Bringt uns zum Ergebnis, dass print in Perl selbst auch zu runden scheint. Und das kann tückisch sein, wenn man es nicht weiß, denn man sieht es nicht bei der Ausgabe von Zwischenergebnissen und beim Weiterrechnen mit dem Wert führt es theoretisch zu unendlich kleinen Abweichungen zum tatsächlich mathematisch korrekten Ergebnis. Oder ist .57 x 100 mathematisch nicht 57?
    Und um mehr ging es mir nicht, als das zu zeigen, weil ich vermute, dass JS dahingehend ähnlich ist und vielleicht noch schlimmer, weil browserabhängig.

  8. #38
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.664

    AW: Richtig runden.

    Zitat Zitat von hesst Beitrag anzeigen
    in c ist das genauso wie in perl wie in irgendetwas anderem. maximal kann ich mich in c entscheiden 32 Bit oder 64 Bit darstellung zu nehmen. irgendeine andere sprache hat vielleicht noch 128 Bit darstellung. Ich glaube nicht, dass irgendeine sprache sich nicht an den standard für gleitkommadarstellung hält.
    damit hat man aber 7.22 Dezimalstellen für 32 Bit und 15.95 für 64 bit die als binär-gleitkommazahl verlustfrei speicherbar sind
    6 ist doch richtig für 32 bit.

    std::numeric_limits:igits10 - cppreference.com
    The standard 32-bit IEEE 754 floating-point type has a 24 bit fractional part (23 bits written, one implied), which may suggest that it can represent 7 digit decimals (24 * std::log10(2) is 7.22), but relative rounding errors are non-uniform and some floating-point values with 7 decimal digits do not survive conversion to 32-bit float and back: the smallest positive example is 8.589973e9, which becomes 8.589974e9 after the roundtrip. These rounding errors cannot exceed one bit in the representation, and digits10 is calculated as (24-1)*std::log10(2), which is 6.92. Rounding down results in the value 6.
    damit sind es 6.92 für 32 und 15.65 für 64 bit.


    Zitat Zitat von mikdoe Beitrag anzeigen
    Was hat das jetzt hiermit zu tun?
    du musst wissen, welche genauigkeit benötigt wird.

    Zitat Zitat von mikdoe Beitrag anzeigen
    print in Perl zeigt mehr als 6 Stellen an. Also könnte es das Ergebnis von .57 x 100 eigentlich auch korrekt anzeigen.
    Bringt uns zum Ergebnis, dass print in Perl selbst auch zu runden scheint.
    die ausgabe einer gleitpunktzahl ist immer gerundet.

    Zitat Zitat von mikdoe Beitrag anzeigen
    und beim Weiterrechnen mit dem Wert führt es theoretisch zu unendlich kleinen Abweichungen zum tatsächlich mathematisch korrekten Ergebnis.
    und es kommt sogar noch auf die operatorreihenfolge an. ja, ein mathematisch korrekten Ergebnis bekommt man in den wenigsten fällen. man benötigt es aber auch nicht. du selbst rundest doch bestimmt auch meistens.
    wenn du von hier nach da fährst, zeigt dein navi auch keine mm an.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Oder ist .57 x 100 mathematisch nicht 57?
    und ist gerundet auf 2 nachkommastellen .569 x 100 nicht 57?


    Zitat Zitat von mikdoe Beitrag anzeigen
    Und um mehr ging es mir nicht, als das zu zeigen, weil ich vermute, dass JS dahingehend ähnlich ist und vielleicht noch schlimmer, weil browserabhängig.
    NOCH MAL das ist sprachunabhängig.

  9. #39
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Richtig runden.

    Zitat Zitat von mikdoe Beitrag anzeigen
    print in Perl zeigt mehr als 6 Stellen an. Also könnte es das Ergebnis von .57 x 100 eigentlich auch korrekt anzeigen.
    Bringt uns zum Ergebnis, dass print in Perl selbst auch zu runden scheint.
    Genau das war das was ich oben gezeigt hatte - Perl und alle Sprachen die diese C floating point libary benuzten runden bei der Anzeige von Fliesskommazahlen, je nachdem welcher Wert in DBL_DIG steht. Ich dachte du hast das verstanden.
    Wenn du eine genaue Ausgabe möchtest musst du printf nehmen.
    Geändert von ein schlauer (05-06-2013 um 14:56 Uhr)

  10. #40
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von hesst Beitrag anzeigen
    du selbst rundest doch bestimmt auch meistens.
    Das ist die zentrale Frage.
    Bei .57 x 100 = 57 wäre ich - ich bin kein Berufsprogrammierer! - früher auch nicht davon ausgegangen, dass da "intern" nicht 57 bei raus kommt und man formatieren/runden/abschneiden muss/kann/soll.

    Zitat Zitat von ein schlauer Beitrag anzeigen
    Genau das war das was ich oben gezeigt hatte - Perl und alle Sprachen die diese C floating point libary benuzten runden bei der Anzeige von Fliesskommazahlen, je nachdem welcher Wert in DBL_DIG steht. Ich dachte du hast das verstanden.
    Insgesamt hatte ich es schon verstanden. Ihr brauchtet jetzt für mich auch keine umfangreichen Recherchen durchzuführen, um meine meist retorischen Fragen zu beantworten.
    Aber bis ich das wusste hätte ich niemals gedacht, dass ein Computer aus .57 x 100 nicht 57 raus bekommt, insbesondere weil print das ja suggeriert.
    Ein Taschenrechner kommt ja auch auf 57, mal ganz platt gesprochen

    Dennoch mal stellvertretend für alle interessierten Leser danke für die angeregte Diskussion. Ich habe wieder was dazu gelernt.

  11. #41
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Richtig runden.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Insgesamt hatte ich es schon verstanden. Ihr brauchtet jetzt für mich auch keine umfangreichen Recherchen durchzuführen, um meine meist retorischen Fragen zu beantworten.
    Aber bis ich das wusste hätte ich niemals gedacht, dass ein Computer aus .57 x 100 nicht 57 raus bekommt, insbesondere weil print das ja suggeriert.
    Ein Taschenrechner kommt ja auch auf 57, mal ganz platt gesprochen
    Taschenrechner rechnen i.d.R. nicht mit Fliesskommazahlen sondern mit BCD (BCD-Code) Zahlen.

  12. #42
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: Richtig runden.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Würdest du für diese Aussage deine Beine ins Feuer legen, Korbinian?
    Ja. Steht so in den Specs. Wenn eine Implementierung das nicht so macht, ist es nicht JS...

    Zitat Zitat von ein schlauer Beitrag anzeigen
    .toFixed(2) auch.
    Nein... in meinem Browser nicht. Und deiner sollte das auch nicht machen.
    Zitat Zitat von ein schlauer Beitrag anzeigen
    Bei mir sieht das anders aus: alert(4.9349999999999999) => 4.935 oder
    zahl = 4.9349999999999999;
    alert(4.935 === zahl); // => true
    Genau darauf wollte ich hinaus. Diese beiden Zahlen werden intern gleich gespeichert. Welche also jetzt genau gerundet wird, ist Auslegungssache.
    Zitat Zitat von ein schlauer Beitrag anzeigen
    Wobei diese problematik wohl nur akademischen Wert haben dürfte. Da diese Zahlen bei der Berechnung von Währungen in der Realität nicht vorkommen sollten.
    Stimmt.

  13. #43
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Richtig runden.

    Zitat Zitat von kkapsner Beitrag anzeigen
    Ja. Steht so in den Specs. Wenn eine Implementierung das nicht so macht, ist es nicht JS...
    Ja, ok. Zu dem Zeitpunkt meiner zugehörigen Frage war noch nicht sauber zwischen interner Speicherung und der Ausgabe mit print unterschieden.

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 09-10-2013, 11:52
  2. Antworten: 4
    Letzter Beitrag: 19-12-2012, 23:06
  3. Antworten: 3
    Letzter Beitrag: 19-10-2011, 08:18
  4. Antworten: 0
    Letzter Beitrag: 07-08-2011, 10:28
  5. Math.round Problem mit rundung bei Ganzzahlen
    Von siggedy im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 01-12-2010, 01:14

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •