Durch eine kniffelige Sache mit einer transzendenten Gleichung habe ich drei harte Tage gehabt - und bin auf eine interessante Sache gestoßen: In meiner WebApp lassen sich Floats mit bis 100 Nachkammastellen darstellen.
Allerdings nutzt das nichts, denn bei einer Berechnung mit tan(x) wird die Genauigkeit durch viele Nachkommastellen nicht erhöht:
Bei Berechnung mit sin(pi/4) / cos(pi/4) als extended weicht das Ergebnis
- in der WebApp an der 16. Nachkommastelle
- In der PasApp an der 20. Nachkommastelle
von 1 ab { tan(pi/4) = tan(45°) = 1 }.
Und interessant ist auch, dass in der PasApp die Berechnung des tan durch sin(x)/cos(x) genauer ist als die function tan(x) selbst, wo bereits an der 19. Nachkommastelle von 1 abgewichen wird.
Wird für die Variablen double statt extended verwendet, so weichen in der PasApp bei beiden Berechnungen die Ergebnisse an der 16. Nachkommastelle von 1 ab, allerdings ist hier die tan(x) genauer als sin(x)/cos(x).
Für mich wäre interessant zu wissen. warum die eigentliche function tan(x) nicht so genau ist wie sin(x)/cos(x). Weis wer, wo ich da suchen kann oder warum das so ist?
Tangens in der WebApp berechnet, mit 42 Nachkommastellen dargestellt - bis zu 100 sind möglich!
Tangens in der PasApp, zum Vergleich auch mit 48 Nachkommastellen dargestellt, die halt mit Nullen aufgefüllt werden.
Berechnungen mit bis zu 100 Nachkommastenn funktionieren in der WebApp:
100 Nachkommastellen in Javascript?
- Niesi
- Lazarusforum e. V.
- Beiträge: 338
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1
100 Nachkommastellen in Javascript?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Beiträge: 6214
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: 100 Nachkommastellen in Javascript?
Dies tönt ja recht spannend. Wie hast du dies hingekriegt.In meiner WebApp lassen sich Floats mit bis 100 Nachkammastellen darstellen.
Hast du da selbst was gecodet, oder kann die javascript von Haus auf ?
Dies ist eine javascript/Browser interne Sache.Und interessant ist auch, dass in der PasApp die Berechnung des tan durch sin(x)/cos(x) genauer ist als die function tan(x) selbst, wo bereits an der 19. Nachkommastelle von 1 abgewichen wird.
Wobei mit folgendes das gleicher Resultat ausspuckt.
Code: Alles auswählen
var
f: double;
function tan(const A: double): double; external Name 'Math.tan';
begin
f := 12.34;
Writeln(tan(f));
Writeln(sin(f) / cos(f));
Code: Alles auswählen
-0.23031823627096235
-0.23031823627096235
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot