"We are back" « oc.at

Problem mit atan in c

Elektrosmog 20.06.2002 - 09:01 2219 46
Posts

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
Möchte den 24*atan(1/8) ausrechnen und weitere solche Formen. Geht das? Bei mir kommt immer 0 heraus, obwohl dieses Ergebniss eigentlich nicht möglich ist. Bitte um Hilfe

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
post mal den ganzen source - sicher geht des nur wahrscheinlich hast an Fehler im Source ;) ;) ;)

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
#include <stdio.h>
#include <math.h>

void main()

{
float pi;
pi=24*atan(1/8)+8*atan(1/57)+4*atan(1/239);
printf("\n\nDie Zahl Pi nach Stormer ist %f \n", pi);
return 0;
}

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
24*atan(1/8.0)

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
wieso 24*atan(1/8.0) ???

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
warum eigentlich net
24*atan(0.125)
is aus performance-gründen sicher besser.....


btw, wieso nicht mitn calc ausrechnen und händisch hinschreiben????
so in etwa pi=3.14 //gerundet ;) *lol*

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
es geht mir nicht darum Pi mit meinem taschenrechner auszurechnen. Ich möchte wissen wie genau Stormer Pi ausgerechnet hat und das an einem von mir geschriebenen Programm. DAs mit den Kommazahlen könnte wirklich besser sein

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Zitat von .deRElict.
24*atan(1/8.0)

Weil ohne .0 wird alles in int form berechnet, bei 8.0 wird eine float Rechnung gmacht!

Immer Kommazahlen verwenden wenn man float hat - auch ohne Nachkommastellen!

Mfg, Vir@s

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
Ah jetzt wird mir einiges Klar. Müsste ich dann nicht 24.0*atan(1.0/8.0) rechnen?

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
es reicht wenns 1 Faktor 8.0 ist, zumindest soweit ich mich erinnern kann :)

Aber wenn du alle .0 machst kanns auf keinen Fall schaden!

Mfg, Vir@s

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von Bimminger
is aus performance-gründen sicher besser.....

Kommt genau auf's gleiche raus, weil der Compiler es soundso ausrechnet, egal wie man's hinschreibt.

Und Vir@s hat recht, die Berechnung wird mit Gleitpunktzahlen ausgeführt, sobald einer der Operanden eine solche ist.

Oculus

void
Avatar
Registered: Jun 2001
Location: schlafzimmer
Posts: 856
Zitat von Ringding
Kommt genau auf's gleiche raus, weil der Compiler es soundso ausrechnet, egal wie man's hinschreibt.

genau
optimierungsfunktion vom compiler
des is aber nur a kleinstes ding von den ganzen optimierungsverfahren

pfu, des muss so krass zum entwickeln sein, so a optimierer :eek:

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Vorallem was für nen Rechner hast du damit man eine Division aus Performance-Gründen abkürzt? :)

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
fehler: deine void-funktion gibt einen wert zurück

edit:

#include <iostream.h>
#include <math.h>

void main()
{
double pi;
pi=24*atan(1/8.0)+8*atan(1/57.0)+4*atan(1/239.0);
cout << "Die Zahl Pi nach Stormer ist " << pi << endl;
}

hat pi nicht sonderlich genau ausgerechnet der kerl
Bearbeitet von FMFlash am 20.06.2002, 18:10

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Eigentlich is ned der Rückgabewert ein Fehler sondern eher des void :)

Wenn mans ganz sauber machen will nimmt man int main(int argc, char *argv[]);

damit hat man wirklich alles im Programm drinnen :)

Mfg, Vir@s
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz