100 Nachkommastellen in Javascript?

Antworten
Benutzeravatar
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?

Beitrag von Niesi »

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!
Bildschirmfoto vom 2024-03-23 09-18-34.png
Bildschirmfoto vom 2024-03-23 09-18-34.png (172.24 KiB) 7675 mal betrachtet

Tangens in der PasApp, zum Vergleich auch mit 48 Nachkommastellen dargestellt, die halt mit Nullen aufgefüllt werden.
Bildschirmfoto vom 2024-03-23 09-26-04.png
Bildschirmfoto vom 2024-03-23 09-26-04.png (97.97 KiB) 7675 mal betrachtet

Berechnungen mit bis zu 100 Nachkommastenn funktionieren in der WebApp:
Bildschirmfoto vom 2024-03-23 09-37-32.png
Bildschirmfoto vom 2024-03-23 09-37-32.png (6.91 KiB) 7675 mal betrachtet
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: 100 Nachkommastellen in Javascript?

Beitrag von Mathias »

In meiner WebApp lassen sich Floats mit bis 100 Nachkammastellen darstellen.
Dies tönt ja recht spannend. Wie hast du dies hingekriegt.
Hast du da selbst was gecodet, oder kann die javascript von Haus auf ?
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.
Dies ist eine javascript/Browser interne Sache.

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

Antworten