Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mathematische Operatoren/Zeichen (https://www.delphipraxis.net/114104-mathematische-operatoren-zeichen.html)

daredd 19. Mai 2008 20:19


Mathematische Operatoren/Zeichen
 
Hallo Leute,

kann mir einer sagen wo ich im internet eine Liste finde mit den schreibweisen von exponenten in Delphi.

Zum beispiel will ich mit der Zahl: 1,67262145 * 10^-27 (1,67262145 mal 10 hoch -27) rechnen wenn ich aber das so in Delphi eingebe schreibt er mir folgende Fehlermeldung beim Compelieren:

[Error] Unit1.pas(93): Pointer type required


Wie soll ich das dann schreiben damit der Compiler das erkennt, und solche sachen wie dei natürlicher Logarithmus (Ln) und Eulersche-Zahl (e) brauche ich auch. (Also wie ich das korrekt in delphi schreibe.

sirius 19. Mai 2008 20:23

Re: Mathematische Operatoren/Zeichen
 
Wenn du sie als Zahlen haben willst, musst du sie vorher selber ausrechnen.

Wenn du sie als Funktion von Variablen haben möchtest, dann suche mal die Funktionen in der Unit math (power, ln, exp).

Die Muhkuh 19. Mai 2008 20:23

Re: Mathematische Operatoren/Zeichen
 
Hi,

stöber mal in der Unit Math, da ist das meiste drin. :zwinker:

alleinherrscher 19. Mai 2008 20:25

Re: Mathematische Operatoren/Zeichen
 
Zitat:

Zitat von daredd
Hallo Leute,

kann mir einer sagen wo ich im internet eine Liste finde mit den schreibweisen von exponenten in Delphi.

Zum beispiel will ich mit der Zahl: 1,67262145 * 10^-27 (1,67262145 mal 10 hoch -27) rechnen wenn ich aber das so in Delphi eingebe schreibt er mir folgende Fehlermeldung beim Compelieren:

[Error] Unit1.pas(93): Pointer type required


Wie soll ich das dann schreiben damit der Compiler das erkennt, und solche sachen wie dei natürlicher Logarithmus (Ln) und Eulersche-Zahl (e) brauche ich auch. (Also wie ich das korrekt in delphi schreibe.

Sorry, wenn ich die frage nicht verstanden habe... in diesem Fall solltest du

1.67262145e-27

schreiben.

Grüße

daredd 19. Mai 2008 20:26

Re: Mathematische Operatoren/Zeichen
 
danke erstmal für die schnellen antworten!
Werde mal die Math durchsuchen...

SeBa 19. Mai 2008 22:18

Re: Mathematische Operatoren/Zeichen
 
Kleiner Hinweis: power() aus der Unit Math kann leider nicht alles berechnen was mathematisch möglich wäre. Wenn du dich in Mathe ein wenig damit beschäftigt hast, kannste ja deine eigenen power() Funktion schreiben.

sx2008 19. Mai 2008 22:33

Re: Mathematische Operatoren/Zeichen
 
Delphi-Quellcode:
  // Falsch !!
  variable := 1,67262145 * 10^-27; // [Error] Unit1.pas(93): Pointer type required

  // Richtig:
  variable := 1.67262145E-27; // mit Punkt und ohne das *10^

3_of_8 19. Mai 2008 22:56

Re: Mathematische Operatoren/Zeichen
 
Zitat:

Zitat von SeBa
Kleiner Hinweis: power() aus der Unit Math kann leider nicht alles berechnen was mathematisch möglich wäre. Wenn du dich in Mathe ein wenig damit beschäftigt hast, kannste ja deine eigenen power() Funktion schreiben.

Das ist kaum möglich. Ich denke mal, du willst darauf hinaus, dass z.B. power(-8, 1/3) eine Invalid Floating Point Operation wirft, obwohl der Ausdruck
Code:
(-8)^(1/3)
definiert ist. Das Problem ist, dass 1/3 nicht genau darstellbar ist und die FPU daher mit einer Näherung rechnet, und der Wert dieser Näherung ist eben nicht definiert. Es ist also kaum möglich, eine eigene Power-Funktion zu schreiben, die allgemein immer das richtige Ergebnis liefert.

Dust Signs 19. Mai 2008 23:21

Re: Mathematische Operatoren/Zeichen
 
Zitat:

Zitat von 3_of_8
Das Problem ist, dass 1/3 nicht genau darstellbar ist und die FPU daher mit einer Näherung rechnet, und der Wert dieser Näherung ist eben nicht definiert. Es ist also kaum möglich, eine eigene Power-Funktion zu schreiben, die allgemein immer das richtige Ergebnis liefert.

Das ist so nicht richtig. Das eigentliche Problem ist, dass
Code:
Ln(-8)
nicht definiert ist, da Power ja nichts anderes als grob gesagt
Code:
Exp(b * Ln(a))
implementiert, wobei a die Basis und b der Exponent ist. Das liese sich aber dadurch lösen, dass man das Ganze in komplexen Zahlen rechnet - da ist Ln(-8) nämlich definiert und liefert zusammen mit der oben beschriebenen Formel den korrekten Wert für a hoch b.

Dust Signs


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz