|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
[C] Errore con variabili di tipo double
Salve ragazzi!
Ho scritto il seguente programma che calcola il valore di una funzione (in maniera molto grezza) con metodo iterativo. Unico problema: i valori in uscita sono sballati anche se in teoria dovrebbe fungere... Vi posto qui il codice. Confido in un vostro aiuto: Codice:
#include<stdio.h>
#include<math.h>
void main()
{
double x, Fx_prec, Fx_calc, DeltaStd, DeltaCalc;
x=0.00001;
Fx_calc=5*pow(2.7, x);
DeltaStd=0.5*pow(10, -5);
printf("%lf", DeltaStd);
do
{
x+=0.10000;
Fx_prec=Fx_calc;
Fx_calc=5*pow(2.7, x);
DeltaCalc=abs(Fx_prec-Fx_calc)/Fx_calc;
}
while(DeltaCalc<DeltaStd);
printf("%lf\n", Fx_calc);
system("PAUSE");
}
|
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
infatti, se ci fai caso, il tuo codice ha due printf delle quali la prima non é conclusa ne' da uno spazio ne' da un newline, quindi di fatto stampi due numeri uno appresso all'altro. nella prima printf usa questo format string: "%lf " (nota lo spazio finale).
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
Che pirla...
XD Cmq qualcuno conosce il metodo esatto x limitare a un certo numero di cifre significative un numero float? Il prof dice k si usa l'errore relativo come in questo caso... Ma nn so bene come applicaro. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
dove al posto di d devi metterci il numero massimo di cifre decimali. per esempio, per stampare solo fino a 3 cifre decimali usa: "%.3f" l'argomento deve essere un double peró, non un float. |
|
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 10
|
NO a parte quello, intendo durante l'esecuzione di calcoli iterativi. Per rendere terminante un programma bisogna inserire sta condizione altrimenti se calcoli l'asintoto di una funzione ti conviene lasciare acceso il pc a vita e fare un mutuo x pagarti l'elettricità... xD
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ah, capito (almeno credo). allora per limitare un numero decimale ad avere al massimo n cifre decimali moltiplicalo per 10 alla n, poi troncalo ed infine ridividilo per 10 alla n; per esempio, per limitare a 3 cifre decimali moltiplica per 1000, tronca e ridividi per 1000. per troncare puoi usare la funzione floor in math.h.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:21.




















