Laden...

Gibt es einen Datentyp, der genauer als decimal ist?

Erstellt von Simon ohne ie vor 4 Jahren Letzter Beitrag vor 2 Jahren 1.561 Views
S
Simon ohne ie Themenstarter:in
3 Beiträge seit 2020
vor 4 Jahren
Gibt es einen Datentyp, der genauer als decimal ist?

Hallo,
ist jemandem bekannt, ob es einen Datentyp gibt, der genauer als decimal ist?
Falls jemand fragt: Nein, es hat keinen wirklichen Sinn, ich will nur wissen was technisch geht...
java.math habe ich schon ausprobiert, war ein Alptraum und hat nicht funktionier...
Hoffe auf Antworten, Simon

T
2.222 Beiträge seit 2008
vor 4 Jahren

Kurze Antwort ist vermutlich Nein.
Aber was brauchst/suchst du den?

Ansonsten schau in die Doku, da sind "bessere" Typen meistens auch direkt verlinkt.

Decimal

Nachtrag:
Was genau meinst du mit java.math?
Die Math Klasse aus Java, die auch nur die Standard Datentypen liefert?
In Java gibt es meines Wissens nach keinen Typen der mit Decimal Vergleichbar ist, da man auch dort nur auf die Standard Datentypen aufsetzt.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.828 Beiträge seit 2008
vor 4 Jahren

Ja, gibt es.

Wenn Du einen Blick in die Doku geworfen hättest, dann hättest Dir die Frage prinzipiell selbst beantworten können 😃
Denn in der Dokumentation wärst Du dann über BigInteger gestolpert, der die IIRC derzeit höchste Range und Genauigkeit bietet.

Da Du aber nicht verraten willst, was Du tust, kann man prinzipiell aber nicht sauber antworten.
Denn gerade im Finanzbereich vermeidet man aufgrund der Genauigkeit und der Problematik von Rundungsfehlern komplett Floating Point Types und verwendet stattdessen Ganzzahlen in der Mill-Darstellung.

Wenn Du also verrätst, warum Du Dir diese Frage stellst, dann kann man auch entsprechend antworten.
So funktioniert dann auch ein Forum 😃

S
Simon ohne ie Themenstarter:in
3 Beiträge seit 2020
vor 4 Jahren
  1. BigInteger ist mir bekannt, ich suche aber nach einer Gleitkommazahl, nicht nach einer Ganzzahl.
    Auf die Frage, was ich tue, kann ich nur das gleiche schreiben, was in meinem Beitrag steht: ich will wissen, was möglich ist.
S
Simon ohne ie Themenstarter:in
3 Beiträge seit 2020
vor 4 Jahren

Es gibt einen Namespace java.Math, der ist aber leider so gar nicht mein Fall... Ich weiß nicht, ob es an mmir liegt, oder ob zumindest der BigDecimal daraus nicht wirklich gut ist.

16.828 Beiträge seit 2008
vor 4 Jahren

Sorry, aber die Herangehensweise ist halt quatsch.

Du hast primär nach der Genauigkeit gesprochen; nicht die Genauigkeit einer Gleitkommazahl.
Und gerade die Problematik von Gleitkommazahlen sind der Grund, wieso viele Finanzgeschäfte trotz Kommastellen eben mit einer Ganzzahl dargestellt werden - eben mit Hilfe der Mill-Darstellung.

Ganzahl 1000 = 1 Cent.

Da braucht man dann keine Gleitkommazahl mehr um trotzdem alle Aspekte abzudecken.
Möglich ist eben auch Kommazahlen mit Ganzzahlen darzustellen.

Daher ist "was möglich ist" halt.... nichts sagend 😉

T
2.222 Beiträge seit 2008
vor 4 Jahren

Zusätzlich zu Abts aussage, kann ich deie Abneigung gegen Java.Math nicht nachvollziehen.
Dabei handelt es sich genau wie bei der Math Klasse in C# um eine statische Klasse mit häfig benötigten Methoden für diverse grundlegende Rechenoperationen.
Einen anderen Zweck hat die Klasse nicht und sollte Sie auch nicht haben.

Wenn dir BigDecimal auch nicht weiterhilft, du aber aber nicht auf BigInteger aufbauen willst, können wir dir auch nicht weiterhelfen.
Auch ist es nicht sinnvoll Klassen nach ihrem gefühlten Geschmack zu nutzen sondern nach ihrem tatsächlichen Nutzen.
Sonst kannst du ganz schnell in die Versuchen gelangen alles selbst programmieren zu müssen, weil dir die vorhandenen Klasse nicht zu sagen 😕

Wie Abt schon schreibt, fährst du mit BigInteger dann am besten.
Wollte ich auch vorschlagen, da du aber explizit nach decimal gefragt hattest, hatte ich schon vermutet, dass dies nicht deine Absicht gewesen ist.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

H
2 Beiträge seit 2020
vor 2 Jahren

Wäre das den schlimm wenn man sich selber was zusammenbaut indem man sich dem IEEE 754 standart annimmt und einfach eine Klasse baut die Dynamisch jenach bedarf mitwächst?
Ich bin noch nicht lange ein Entwickler deswegen verstehe ich das auch nicht, warum es nicht so gut sein soll. Könntest du mir bitte erklären was daran so verwerflich ist.

16.828 Beiträge seit 2008
vor 2 Jahren

Der Fokus der meisten Software Architekturen ist, dass Standards verwendet werden, um Nachhaltigkeit zu schaffen, Sicherheit zu ermöglichen und Fehler zu vermeiden.
Einen eigenen Datentypen zu entwickeln ist definitiv nichts, was man im ersten Schritt überlegen sollte, da dies i.d.R. alles andere als trivial ist. Und IEEE754 ist eine durchaus komplexe Norm.

Gerade also wenn Du eher neu im Softwaregebiet bist solltest Du Dir die Frage stellen, ob Du wirklich alleine in der Lage bist einen Datentypen zu schaffen, eine Norm wirklich erfüllen zu können - und ob Du Dir diese Arbeit wirklich machen willst.
Und wenn man sich anschaut, wie Datentypen in der Softwarewelt umgesetzt werden: es gibt sehr schlaue Menschen und Gremien, die sich über sowas Gedanken machen und Implementierungen planen - über Monate.
Das allein sollte zeigen, dass man sich vielleicht etwas übernehmen könnte, wenn man sowas alles selbst machen will 🙂

Einen eigenen Datentypen zu entwickeln bzw. Standards bewusst zu missachten, fällt für mich persönlich auch unter Not-invented-here-Syndrom

H
2 Beiträge seit 2020
vor 2 Jahren

Das sind durchaus gut nachvollziehbare Gründe, mir fällt es auch mehr in den Sinn eine Vorhandene API oder Implementierung zu nutzten, schon alleine aus dem Grund das ich das nich immer wieder das Rad neu erfinden möchte.

Mag sein das dass IEEE754 eine komplexe Norm darstellt, aber ich finde mann kann es verstehen wenn man sich ein wenig Mühe gibt.
Also es sich mal anzuschauen kann auf jeden Fall nicht schaden! ( meine Meinung )

Wie gesagt bin ein Junior entwickler zwar schon mit Praxis Erfahrung aber ich bin trotztdem noch ganz am Anfang.

Danke für die ausfürliche Erklärung