Mathe, mehrere Stellen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Mathe, mehrere Stellen?

Beitrag von DrNo »

Hallo,
Wie kann ich mit PB auf 1 Millionen stellen nach dem Komma ausrechnen, oder wenigstens 10...? :D

Also jetzt z.B. Wurzel 2 oder so.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

bla.f = Sqr(2)
Debug bla

ist mehr als genug für den "normalen" Gebrauch
pb 4.51
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Und für den übernormalen Bereich:

bla.d = Sqr(2)
Debug bla

:mrgreen:


Um das in Programmen auszugeben musst du natürlich entsprechend StrF() bzw. StrD() benutzen, da kannst du auch angeben wie viele Nachkommastellen ausgegeben werden sollen, dabei ist Double (.d) doppelt so genau wie Float (.f) aber beide sind nicht unendlich genau...
(\/) (°,,,°) (\/)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

in PB selber gabs dafür keine Funktion.

Was du machen kannst ist, dei Proceduren für "hoch genaue" Zahlen zu schreiben, wo man dann Addieren und Multiplizieren kann, (gibs auch schon im CodeArchiv)

danach kannst du für das Wurzelziehen zB das Newton-Verfahren oder Heron-Verfahren nutzen, beide können eine beliebig genau ziehen, jodoch mit steigendem Rechenaufwand.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

STARGÅTE hat geschrieben:in PB selber gabs dafür keine Funktion.
Nicht ganz richtig.

Es gibt den Datentyp Double ".d", der rechnet auf bis zu 308 Stellen nach dem Komma. Zwar nicht unbedingt sooo genau, aber immerhin. Mit StrD(zahl.d, stellen) kannst du bei der Ausgabe dieser Zahl die Anzahl der Nachkommastellen erzwingen.

Wenn du wirklich genau und mit möglichst vielen Nachkommastellen rechnen willst (1 Mio. halte ich für übertrieben), kriegst du das mE nur hin, wenn du Die zahlen als Strings behandelst und mittels eigener Prozeduren mit diesen "String-Zahlen" rechnest.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Es gibt den Datentyp Double ".d", der rechnet auf bis zu 308 Stellen nach dem Komma.
Nicht ganz richtig.

das heißt nur das er Zahlen die ca 308 Stellen HÄTTEN anzeigen kann:

Code: Alles auswählen

a.d = 1e100
b.d = 1e200
c.d = 1e300
d.d = 1e400
Debug a
Debug b
Debug c
Debug d
Die Genauigkeit von Wurzel(2) bleibt jedoch bei knapp 20 Stellen:
x.d = Sqr(2)
Debug StrD(x,50)
da nützt es auch nix StrD() n hohe nachkommastellen zu geben
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Gab mal eine LIB "pbAPM". Ist aber leider nicht mehr zu PB 4.xx kompatible.

Muss man mal nach eine 'C' LIB oder DLL suchen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten