Wo isn da der Unterschied im Quelltext? Bigdecimal kann zwar eine genauere Darstellung liefern, aber nie 100%ig exakt sein
rechnet sun-jdk falsch?
-
-
Zitat von Swoncen
Wo isn da der Unterschied im Quelltext?
Direkt vor deiner Nase Der eine verwendet 3.2, der andere "3.2". Das ist relevant, weil 3.2 schon als Gleitpunktzahl dargestellt wird und daher ungenau ist. Aus dem String "3.2" kann sich der Konstruktor allerdings ein genaue Darstellung ausschnapsen.ZitatBigdecimal kann zwar eine genauere Darstellung liefern, aber nie 100%ig exakt sein
Doch, kann es. Jede Zahl, die aus einem endlich langen Dezimalstring konstruiert wird, ist notwendigerweise rational; rationale Zahlen kannst du mit einem Paar aus einer ganzen und einer natürlichen Zahl exakt darstellen (natürlich ist für beliebige Genauigkeit beliebig viel Speicher nötig, aber in der "Praxis" wird der üblicherweise reichen). Weiters sind die rationalen Zahlen abgeschlossen gegenüber den Grundrechnungsarten. Solang du also nur +, -, *, / rechnest, werden deine Ergebnisse intern immer genau sein.
Daß etwa 1/3 im Output nicht als endlicher Dezimalstring darstellbar ist, ist eine andere Geschichte.EDIT: Na gut, das obige stimmt so nicht für BigDecimal; es ist problemlos möglich, rationale Zahlen exakt darzustellen, allerdings macht BigDecimal was anderes.
-
Jop, wenn du genaue Dezimalstellen brauchst, dann nimm einen Integer, und verstell die Einheit. Also statt Bruchteilen von Metern gibst halt alles in ganzzahligen Millimetern an, einfach gesprochen.
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!