Hochzahlen ohne pow, wie?

fabian24

Mitglied
Hallo, habe ich kleines Problem mit pow.
ich muss aus sehr langen Formeln, die aus Excel stammen, einen Wert auslesen:
das Problem ist, in Excel steht bei Hochzahlen z.B. "1354^E4", aber in C++ Builder muss
ich pow(1354, E4) und wenn dieses "^" in der Excel Formel ca. 20 mal vorkommt wirds schwierig, deswegen hoffe ich das jemand weiß wie ich auch in C++ nur "^" schreiben muss.

Ich hoffe ich könnt mir auch dieses mal wieder helfen!
Danke im voraus!
 
Hi.

Also prinzipiell geht das natürlich schon. Du müßtest lediglich eine eigene Klasse erstellen, dann kannst du für diese Klasse alle Operationen definieren (indem du die Operatoren überlädst) die du brauchst. Dann mußt du allerdings die Zahlen die du von Excel übernimmst vorher in Instanzen dieser Klasse überführen...

Ich würde sagen lass es lieber. Das ist die ganze Sache nicht wert, nur weil du gerne eine andere Schreibweise hättest. (was anderes sind Operatoren ja nunmal nicht)

Außerdem mußt du natürlich sehr sorgsam aufpassen, das du nicht hohe Ungenauigkeiten in die Berechnung bekommst. Ich denke du wirst nicht so ohne weiteres die Formeln von Excel übernehmen können. Die Ergebnisse werden dann ziemlich sicher differieren.
 
Das ist die Sache bei 500 Formeln zu je 20 KB schon Wert.
Danke für den Tip mit der Klasse, ich werds mal ausprobieren.
 
500 Formeln zu je 20kB
Ups. 20kB pro Formel?

Naja, also wenn das so ist - hier ein Beispiel:
Code:
#include <cmath>
#include <iostream>

class Num {
  double n;

public:
  Num (double x) : n(x) { }
  
  Num operator^ (const Num& other) const {
    return pow(n, other.n);
  }
  operator double( ) {
    return n;
  }
}; 


int main ()
{ 
  using namespace std;
  
  cout << (Num(2)^Num(3)) << endl;
}

Oder was hälst du denn davon die Formeln automatisch konvertieren zu lassen? Also mit Perl, Python oder selbst C++ ist das sicher schnell gemacht.

Wie bekommste denn die Formeln von Excel in deinen Quelltext? Kannste die ganzen Formeln irgendwie in eine Textdatei exportieren?
 
Zurück