06/01/10 13:14
Ciao a tutti. Ho il seguente problema:
Sto tentando di costruire una calcolatrice con alcune funzioni scientifiche (quali seno, coseno e tangente) però danno dei problemi di compatibilità.
I codici che metto nei bottoni Coseno e Seno sono i seguenti:
COSENO
SENO
Quando provo il programmino, l'operazione va bene per Cos(Pi) che come ci si aspetta mi da -1, mentre se provo Cos(Pi/2) che dovrebbe darmi 0, mi risulta -3,49148336110938E-15.
Così allo stesso modo, Sin(Pi/2) risulta tranquillamente uguale a 1, mentre Sin(Pi) che dovrebbe darmi 0 mi risulta 3,23108510433268E-15.
Tutto questo per i radianti. Mentre se cambio a Gradi, i risultati errati cambiano e più precisamente sono doppi di quelli avuti con i radianti (ovviamente nei Gradi non ho usato Pi e Pi/2 ma 180 e 90).
Sapreste darmi una risposta?
Grazie mille in anticipo
Sto tentando di costruire una calcolatrice con alcune funzioni scientifiche (quali seno, coseno e tangente) però danno dei problemi di compatibilità.
I codici che metto nei bottoni Coseno e Seno sono i seguenti:
COSENO
procedure TForm1.CoseClick(Sender: TObject); var num: real; begin num:= StrToFloat(Edit1.Text); If Radianti.Checked = True Then begin num:= Cos(num); Edit1.Text:= FloatToStr(num); end; If Gradi.Checked = True Then begin num:= ((num * Pi) / 180); num:=Cos(num); Edit1.Text:= FloatToStr(num); end; end;
SENO
procedure TForm1.SenClick(Sender: TObject); var num:real; begin num:= StrToFloat(Edit1.Text); If Radianti.Checked = True then begin If Radianti.Checked = True then num:= Sin(num); If Gradi.Checked = True Then num:= Sin((num* Pi)/180); Edit1.Text:= FloatToStr(num); end; end;
Quando provo il programmino, l'operazione va bene per Cos(Pi) che come ci si aspetta mi da -1, mentre se provo Cos(Pi/2) che dovrebbe darmi 0, mi risulta -3,49148336110938E-15.
Così allo stesso modo, Sin(Pi/2) risulta tranquillamente uguale a 1, mentre Sin(Pi) che dovrebbe darmi 0 mi risulta 3,23108510433268E-15.
Tutto questo per i radianti. Mentre se cambio a Gradi, i risultati errati cambiano e più precisamente sono doppi di quelli avuti con i radianti (ovviamente nei Gradi non ho usato Pi e Pi/2 ma 180 e 90).
Sapreste darmi una risposta?
Grazie mille in anticipo