begin process at 2010 02 10 16:13:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Probleme entre float et double


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme entre float et double

vendredi 18 avril 2008 à 21:06:45 | Probleme entre float et double

darkwhite



Salut a tous,
j'ai un probleme bizarre. J'ai fait un programme avec des fonctions et des variables float. Tout marche impecable. Cependant j'ai voulu passer à des variables double et  j'ai donc changé tout les float par double. Et bien sur sa ne marche pas (le prog se compile mais les resultat sont mauvais).
Quel difference y a t-il donc entre le float et le double??. Pour printf et scanf le %f est bien commun au float et au double ?


Voila le code (en float) qui marche, il est regroupé dans plusieurs fichier (mais ça c'est pas vraimment important). Il s'agit d'un programme de calcul d'integrale par la methode de simpson.

Dans ce fichier on a la fonctions de resolution et celle qui renvoie la valeur de f(x) la fonction calculée :

#include <stdio.h>
#include <math.h>
float f(float x);

//algorithme de calcul de simson
float simpson (float a, float b,int N)
{
  float h=(b-a)/N;
 
  float sigma1=0,sigma2=0,I=0;
  int j=0;

  for(j=1;j<=(N/2)-1;j++)
    {
   
      sigma1=sigma1+f(a+2*h*j);

    }
  //  printf("sigma1=%f\n",sigma1);getchar;
 
  for(j=1;j<=(N/2);j++)
    {
   
      sigma2=sigma2 +f(a+h*((2*j)-1));

    }
 
  // printf("sigma2=%f\n",sigma2);getchar;
 
  I= (h/3)*(f(a)+2*sigma1+4*sigma2+f(b));
 
  return I;
 
}
//renvoie l'image par la fonction f
float f(float x)
{
  float y;
    y=1/(sqrt(1-(sin(3.14/6)*sin(3.14/6))*(sin(x)*sin(x))));
    return y;
}

Et dans un autre on a un main qui communique avec ça pour obtenir les resultats.
Voila j'esperere que vous pourrez m'aider. En fait j'ai juste un probleme avec float et double, l'algorithme est juste, mais je prefere vous presenter trop que pas asser

Un grand merci d'avance.

vendredi 18 avril 2008 à 21:52:42 | Re : Probleme entre float et double

juju12

Réponse acceptée !

essaye en remplaçant %f par %lf, ça devrait aller (c'est surtout pour scanf en fait).

vendredi 18 avril 2008 à 22:33:01 | Re : Probleme entre float et double

luhtor

Réponse acceptée !
Les double sont plus précis et en général plus rapide si tu utilises les fonctions de la fpu, genre la trigo etc.
vendredi 18 avril 2008 à 22:37:21 | Re : Probleme entre float et double

darkwhite

J'ai remplacer le scanf par du %lf est le resulat donne -infini quand je met que des doubles.



vendredi 18 avril 2008 à 23:03:35 | Re : Probleme entre float et double

juju12

bizarre j'ai testé chez moi ton code, il renvoyait le même résultat pour float et double.

int

main(void)
{
   
double a,b;
   scanf(
"%lf%lf",&a,&b);   
   printf(
"%lf\n",simpson(a,b,100));
   
return 0x0;
}

tu utilises quoi comme compilateur?
vendredi 18 avril 2008 à 23:05:43 | Re : Probleme entre float et double

darkwhite


gcc -o simpson test-simpson.c simpson.c -lm

Mais moi aussi j'ai fait un petit code de merde avec un appel avec scanf("%lf",&x) et sa marche
Donc je ne sais plus quoi modifier ...
Je sent que je vais devoir creer un nouveau fichier


vendredi 18 avril 2008 à 23:17:05 | Re : Probleme entre float et double

juju12

bof y a pas de raisons...
si tu fais:

double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf\n%lf\n",a,b);
obtiens-tu les bonnes valeurs de a et b?

d'autre part, as-tu testé avec des valeurs directement dans le code, par exemple simpson(1.0,3.0,100)? Si cela fonctionne ou pas permettra de cerner le problème : soit la fonction soit la saisie de variables.

vendredi 18 avril 2008 à 23:42:03 | Re : Probleme entre float et double

darkwhite



je pense qu'il s'agit de la saisie car j'ai mis un printf("a=%lf\nb=%lf\n");getchar(); au debut de la fonction simpson qui m'affiche a=0.000 et b=0.000 (j'ai dejà vu ce probleme mais la j'ai bien mis scanf("%lf)) et j'ai aussi essayer de mettre ce meme  printf("a=%lf\nb=%lf\n");getchar(); juste apres la saisie des variables mais il n'apparait pas dans le programme, il ne s'affiche pas.



Cette discussion est classée dans : probleme, double, float, sigma1, sigma2


Répondre à ce message

Sujets en rapport avec ce message

float->double [ par cstephane78 ] stephane 78bonjour,Connaissez-vous une méthode qui permet de convertir un float en double sans perte de precision (ajout de 0 à la suite du nombre à 1 probleme cast [ par morgandetoi06 ] svp aidez moi...j utilise la fonction pow qui renvoie un doubledonc je fait double b; // nombredouble j; // exposantdouble n; // reponsen=pow(b,j);don PROBLEME SINUS [ par COLLECTION ] Bonjour c'est encore moi je travail en C en mode consoleaidez moi a trouver l'erreur#include #include main (){float B , C , sinangle ;long float PI = Probleme String -> double et long [ par lebalrog ] Salut tout le monde!J'ai un prob urgent a resoudre (tres urgent meme)!je fais :ficin >> ligne;long r=atol(ligne);double a=atof(ligne);avec ligne="0,12 float-->char* ou double-->char* [ par tavernier ] Help !Comment puis-je faire pour transformer mon float, ou mon double en char * ?Merci d'avanceJulien (Militant 4NT! M!Cr0$0FT depuis toujours!) double ou float ??? [ par michelmt ] j'ai une boite de dialogue où je doit entrée des donné numérique comme ( 2.25 )mais il ne veut pas mettre le POINT ,j'ai essayer "double" puis "float Conversion de double en long [ par morphi ] Bonjour,Un petit probleme posé lors du codade ..J'ai un double dvaleur = 1.00000, je le convertie en long par casting :lvaleur=(long)dvaleuret je me r cast d'un float en double [ par ashboody ] j'aimerais me passer de la variable d_val est-ce possible en faisant un cast de f_val ?/* proto de la fonction Calcul */int Calcul (double *Value);/* OpenGL : double ou float ? [ par eplanet ] Bonjour à tous, je fais un petit programme en OpenGL manipulant de nombreux triangles, et je stocke toutes les données (vertex, normales, coordonnées Probleme de cosinus [ par Michou69004 ] Bonjour a tous. J'ai un petit probleme avec mon code. pour effectuer une rotation , j'utilise ma fonction my_rota et je suppose qu'il y a un probleme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales