_
toggle menu eXmatrikulationsamt.de
online: 371 gäste

> C++ Problem real zu int casten

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 15 Feb 2008, 16:40
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

hallo leute,

ich programmier zur zeit n bissl für meine diplomarbeit und arbeite da mit c++ und c-xsc als
zusatzlibrary...

nun hab ich ein wert N vom typ real und brauch den aber als int (variablenname anz)...
im prinzip is das auch ne ganze zahl... abgesehen davon kann der von mir aus auch alles hinterm
komma abschneiden
nur meckert der immer

bei anz = N;
da kommt error: cannot convert ‘cxsc::real’ to ‘int’ in assignment

und bei anz = int(N);
komt: error: invalid cast from type ‘cxsc::real’ to type ‘int’

hat jemand ne idee, was ich machen kann???

ach ja, die zahl N entsteht durch nen Bruch... im Zähler wird ein komplexes integral gebildet, das als
wert ein vielfaches von 2pi hat und im Nenner steht dann halt 2pi... also kommt ne ganze zahl raus...

danke...
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 15 Feb 2008, 17:38

3. Schein
***

Punkte: 209
seit: 23.10.2006

Die Typischen Realzahlen sind blöd zu managen. Wenn Du kleine Rundungsfehler hast, kann aus 1000 gut mal 999,99998irgendwas werden. Nach int umwandeln -> 999 = Fehler.

Mit Runden bist Du auf der sicheren Seite. Kann sein, dass er in dieser Klasse Pi ausklammern und dann rational bzw. ganzzahlig rechnen kann. Dann kannst Du getrost direkt umwandeln. Generell hilft dir vielleicht ein eigener Operator (ungetestet, aus anderen Antworten gebaut):

CODE

inline operator int (cxsc::real r) {
  return int(double(r));
}


Dieser Beitrag wurde von Keinstein: 15 Feb 2008, 17:38 bearbeitet


--------------------
Ну заяц, погоди!
ProfilPM
AntwortenZitierenTOP
post 16 Feb 2008, 16:59
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

Zitat(Keinstein @ 15 Feb 2008, 16:38)
Die Typischen Realzahlen sind blöd zu managen. Wenn Du kleine Rundungsfehler hast, kann aus 1000 gut
mal 999,99998irgendwas werden. Nach int umwandeln -> 999 = Fehler.

*


dieses problem läßt sich aber leicht umgehen, indem man auf die zahl 0,5 draufrechnet... so wird durch
abschneiden korrekt gerundet...
ProfilPM
AntwortenZitierenTOP
Beiträge
marco   C++ Problem   15 Feb 2008, 16:40
Crunch Head   Kenne zwar die Bibliothek ned, aber deren Doku sag...   15 Feb 2008, 16:48
marco   scheint zu klappen... danke...   15 Feb 2008, 16:54
Keinstein   Die Typischen Realzahlen sind blöd zu managen. Wen...   15 Feb 2008, 17:38
stth   kann man den rundungsmodus nicht umstellen?   16 Feb 2008, 15:10
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: