Genauigkeit/Precision ?? (1e-017 = 0 "setzten")
-
Ich häng mich mal hier ein, denn ich hab da mal 'ne Frage:
#include <iostream> #include <limits> #include <iomanip> int main() { std::cout<<std::fixed<<std::numeric_limits<long double>::max()<<"\n\n\n" <<std::numeric_limits<long double>::epsilon()<<std::endl; }1. Wieso ist das zweite Ergebniss Null ?
2. Müsste nicht das Verhältniss gelten: größe ersten Wertes geteilt durch 1 ist der Epsilon ?
Also Anzahl möglicher Nachkommastellen gleich Anzahl möglicher 'Vorkommastellen' (ich weiß da gibt es einen Begriff, fällt mir leider grad nicht ein ?
-
1. Weil das epsilon so klein ist, dass du es nicht mit der von dir fixierten Stellenzahl ausgeben kannst, ohne es auf 0 zu runden.
2. Wolltest du "1 geteilt durch" schreiben? Und selbst dann nicht. Du hast den Exponenten vergessen.edit: Schreib doch mal statt fixed scientific (oder lass es weg, da es sowieso Standard ist), dann sollte das klarer werden.
-
SeppJ schrieb:
Weil das epsilon so klein ist, dass du es nicht mit der von dir fixierten Stellenzahl ausgeben kannst, ohne es auf 0 zu runden.
Schafft dieser Datentyp dann also 30 Nachkommastellen ?
Ich würds mit ja ausrechnen, leider weiß ich nicht wie...
Und ja, 1 geteilt durch, das wollt ich schreiben.
-
Hacker schrieb:
Schafft dieser Datentyp dann also 30 Nachkommastellen ?
Wie kommst du auf 30? Kann sein, dass das bei dir so ist, würde mich sehr aber wundern. Und das epsilon hat auch nicht so wirklich was damit zu tun. Beziehungsweise schon, aber nicht so, wie du vermutlich denkst.
-
SeppJ schrieb:
Wie kommst du auf 30?
Wurde im Thread angesprochen.
-
Hacker schrieb:
SeppJ schrieb:
Wie kommst du auf 30?
Wurde im Thread angesprochen.
Es ging darum, dass die Genauigkeit üblicherweise nicht 30 Stellen ist...
-

Eben ?
Da wollt ich wissen ob ein long double diese genauigkeit schafft ...
-
Hacker schrieb:

Eben ?
Da wollt ich wissen ob ein long double diese genauigkeit schafft ...In der Regel nicht, wie du aus dem Wert für das epsilon ablesen kannst, wenn du fähig wärst, es dir anzeigen zu lassen. Dass hier bei dir nichts erscheint, liegt nicht da dran, dass der Wert an sich zu klein ist für die Anzeige, sondern dass du nicht genau weißt, was du da mit den Streammanipulatoren getan hast.
-
Ahh, sry. Ich hab setprecision vergessen. Jetz seh ich's.
Edit: Nein, immer noch falsch. Es scheint, als ob long double (edit) ca. 80 Nachkommastellen schafft.
-
Hacker schrieb:
Ahh, sry. Ich hab setprecision vergessen. Jetz seh ich's.
Edit: Nein, immer noch falsch. Es scheint, als ob long double 63 Nachkommastellen schafft.
Wenn du nicht an einem Spezialrechner sitzt, dann ist auch das Unsinn. Wie kommst du auf die Werte?
-
Nein, vergiss es. Durch schwachsinnige Methoden (precision auf 100 und dann epsilon angeguckt).
-
-
krümelkacker schrieb:
Äm es ging mir um die Anzahl möglicher Nachkommastellen.
Kannst du mir erklären, inwiefern mich das weiterbringt ...?
Außerdem hab ich genau dasselbe schon aussprobiert.
-
Antworten auf sinnfreie Fragen bringen Dich auch nicht weiter. Die Anzahl der darstellbaren Nachkommastellen hängt bei Fließkommazahlen vom Betrag der Zahl ab -- betragsmäßig große Zahlen -> wenig bis gar keine Nachkommastellen, betragsmäßig kleine Zahl -> viele Nachkommastellen. Interessant ist hier die Anzahl der signifikanten Stellen; denn wo das Komma bei einer Fließkommazahl steht, ist fast egal. Verwechselst Du da vielleicht Fließkommazahl mit Fixpunktzahl?
-
krümelkacker schrieb:
Die Anzahl der darstellbaren Nachkommastellen hängt bei Fließkommazahlen vom Betrag der Zahl ab -- betragsmäßig große Zahlen -> wenig bis gar keine Nachkommastellen, betragsmäßig kleine Zahl -> viele Nachkommastellen.
Das ist ja schon was ich vermutete.
Nein, Fixpunktzahlen, den Begriff kenn ich nicht mal.
Und google ist hier leider auch nicht mein Freund. Kannst du mir das bitte erklären ?
Ich schätz mal Fließkommazahlen <=> Fixpunktzahlen, also Zahlen bei denen die Position des Kommas fest steht ?Edit: Ich habs gefunden. Du meintest Festkommazahl. Und, ja - die meinte ich. Also wie genau ginge das jetzt mit long double bei z.B.
1, a1 a2 a3 a4 ..... anWie groß kann n werden ?
-
Man hat so etwas wie eine Maschine vor sich. Bei einem Computer ist diese Maschine gewöhnlich binär und hält für alles eine festgelegte Anzahl Bits (0 / 1) bereit. Den Rest machen Compiler und bereitgestellte Standardfunktionen. Wem das nicht reicht muss selbst nachdenken, eigene Funktionen schreiben und mehr. Über 30 oder 100 signifikante Stellen möchte ich nicht nachdenken egal ob ganzzahlig oder nicht!

-
Hacker schrieb:
Edit: Ich habs gefunden. Du meintest Festkommazahl.
Genau. Oder Englisch: fixed-point number. Ich ließ mich von der englischen Version zu sehr beeinflussen.
Hacker schrieb:
Und, ja - die meinte ich. Also wie genau ginge das jetzt mit long double bei z.B.
1, a1 a2 a3 a4 ..... anWie groß ist n ?
Das solltest Du Dir inzwischen selbst vom "epsilon" herleiten können. Du könntest ja auch nochmal in schlauen Büchern oder Onlinereferenzen nachgucken, ob numeric_limits<long double> nicht auch diese Information direkt anbietet. Bissel Eigeninitiative, wenn ich bitten darf!
-
Ok - tut mir leid. Du hattest recht.
Nach einer Weile hab ichs gefunden.
Es ist die Statische Eigenschaft digits10.Edit2: Gefixt.