begin process at 2012 02 10 08:20:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > COMPARAISON C ET SSE2/3 (WIN32)

COMPARAISON C ET SSE2/3 (WIN32)


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :float, sse2, asm Niveau :Débutant Date de création :19/02/2007 Date de mise à jour :21/02/2007 18:01:43 Vu / téléchargé :7 825 / 533

Auteur : BruNews

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (60)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Suite à discussion sur cette source:
http://www.cppfrance.com/code.aspx?ID=4117 0
voici la démo de comparaison.

IMPORTANT AVANT TOUT:
Lancer Excpt.exe, si affiche:
- ERR, alors STOP ne pas aller plus loin.
- 2, SSE2 prise en charge.
- 3, SSE3 ok, vous pourrez mettre en comment la ligne "#define BNSSE3NOT" de cumSSE.c et recompiler.
Le code de cela est également dans un zip, ne modifier QUE si vous savez ce que vous faites.
-------------------------

Un tableau de 6336 float est créé.
Il s'agit de retourner INT(SUM(SQRT(tabFloat))) avec la seule contrainte que si un float est < 1.0 alors le considérer 1.0, voila tout.
int __fastcall cumSqrt_C(float *pflt)
{
  float f, r = 0.0;
  int i = 6335;
  do {
    f = pflt[i];
    r += ((f > 1.0) ? sqrt(f): 1.0);
  } while(i--);
  return (int) (r);
}

Le fichier cumSSE.c contient la version SSE2, le benef de perf est énorme. Si on augmente la taille tableau, les écarts deviennent rapidement abyssaux.
Il y a dialogbox pour tester les 2 à répétition.
Si qlq'un veut améliorer les perfs en C (fichier cumC.c ONLY) de qlq manière que ce soit, qu'il amène et on testera, je suis preneur.
Je précise que cet exe est déjà compilé option SSE2 et full optimisation.

Qu'on évite de continuer à se prendre le choux à se demander si c'est utile d'optimiser, quand on est payé pour (et pas trop mal), on a autre chose à faire que de philosopher là dessus.
Cette mini fonction est une des centaines contenues dans le calculateur, on boucle une centaine de fois avec contraintes différentes sur des dizaine de milliers d'enregistrement (1 ligne de float comme exemple par enreg).
Il est clair qu'un gros compte qui attend ses stats entre 2 fluctuations des cours de bourse se fout complètement (ou presque) du prix du calculateur et des specs matérielles demandées.
Code générique, portable, ceci cela et autre baliverne n'a rien à faire ici, on veut des perfs et basta.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • CumSqrt.zipTélécharger ce fichier [Réservé aux membres club]15 458 octets
  • CumSSE3.ex_Télécharger ce fichier [Réservé aux membres club]3 584 octets
  • Excpt.zipTélécharger ce fichier [Réservé aux membres club]5 664 octets

Télécharger le zip


 Historique

20 février 2007 20:37:16 :
Ajout de exe SSE3 compilé.
21 février 2007 18:01:45 :
Mineur

 Sources du même auteur

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64)
Source avec Zip Source avec une capture FIND TEXT (WIN64)
Source avec Zip DELETE DIRECTORY (WIN64)
Source avec Zip ENUM DIRECTORY (WIN64)
Source avec Zip TEMPLATES C/C++ POUR VS 2010

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip Source avec une capture OPTIMISATION DE CALCULS (WIN64) par BruNews
Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL par Jhep
Source avec Zip FLOAT EN HEXA (WIN32, ASM) par BruNews

Commentaires et avis

Commentaire de Arnotic le 19/02/2007 12:40:36 administrateur CS

Voici les perfs que j'obtiens avec un processeur Core Duo T2300 à 1.66 Ghz :
Version SS2 : 200
Version C   : 787


Commentaire de max12 le 19/02/2007 18:28:51 administrateur CS

SSE2 : 67
C : 261

(pas de détail sur matériel)

Commentaire de BruNews le 19/02/2007 18:34:41 administrateur CS

Dommage, un petit graphe sur les perfs des différents CPU serait intéressant.

Commentaire de max12 le 20/02/2007 00:39:59 administrateur CS

Dans ce cas je vais tâcher de me rappeler de regarder sur quel matériel je l'ai testé (d'école). Dommage que mon PC perso ne prenne pas en charge SSE2&3 (Athlon XP 3200).

Commentaire de spiky31 le 20/02/2007 09:50:18

sur athlon 64 3700 overclocker a 2540 MHz (2200 de base) :

SSE2 : 86
C : 238

idem avec SSE3 mais je pense que c'est normal car j'ai lu quelque part (wikipedia je crois) que les instructions SSE3 s'executaient plus lentement chez AMD que chez INTEL (a verifier)

sinon brunews peux tu nous expliquer brievement comment tu fait pour tester la presence des instructions SSE2 et SSE3 sur un proc car j'ai pas bien compris (et je ne pense pas etre le seul)
et aussi : que se passe t'il si on execute une instruction SSE3 (ou SSE2) sur un proc qui ne le prend pas en charge
merci

Commentaire de spiky31 le 20/02/2007 09:53:24

j'oubliais : pourrais tu faire un "#define TAILLE_TABLEAU 6336" et modifier le code en conséquence pour que ce soit plus pratique ?
merci

Commentaire de MuPuF le 20/02/2007 11:10:37

Athlon xp 3500+ (socket 939):
- SSE3 : 98
- C    : 273

Commentaire de MuPuF le 20/02/2007 11:13:52

woups, désolé, c'est sse 2 pour moi, il me faut installer visual c++ 2005 pour tester avec sse3 (j'aime bien le 2003 moi :-( )
Mais le 3500+ x86_64 en 939 supporte bien le SSE 3 pour ceux qui voudraient essayer.

Commentaire de BruNews le 20/02/2007 12:05:06 administrateur CS

SSE3 n'est pas "plus lent", simplement qu'ici ce n'est utilisé juste que sur 2 instructions hors boucle donc normal que n'influe pas sur les perfs.
Le CPU émet "Invalid instruction" au système qui virera le processus coupable s'il n'a pas prévu la gestion de l'erreur.
Pour la prog system en ASM il vaudra mieux aller sur asmfr, le but de l'exemple est simplement de montrer qu'un code dédié fait main sera imbattable par un générique C et qu'il ne faut pas craindre d'aller dans cette voie.

On peut constater au vu des premiers résultats que la progression des CPUs est indéniable, grace notamment à l'amélioration du FSB.
Il me vient l'idée de faire un exe de ce genre que je mettrai sur clé USB pour tester le prochain PC à acheter.

Merci pour les résultats et j'espère qu'on en aura d'autres.

Commentaire de Shromilder le 20/02/2007 12:34:21

j'ai eut 3 comme message.
Et si j'essaie de compiler CumSqrt après avoir commenté la ligne "#define BNSSE3NOT", bah j'ai les messages d'erreur suivant (VS 2003):
e:\Downloads\cppfrance_source_41536\cumSSE.c(62): warning C4405: 'xmm0' : cet identificateur est un mot réservé
e:\Downloads\cppfrance_source_41536\cumSSE.c(62): error C2400: erreur de syntaxe d'assembleur inline dans 'opcode' ; trouvé 'xmm0'
e:\Downloads\cppfrance_source_41536\cumSSE.c(63): warning C4405: 'xmm0' : cet identificateur est un mot réservé
e:\Downloads\cppfrance_source_41536\cumSSE.c(63): error C2400: erreur de syntaxe d'assembleur inline dans 'opcode' ; trouvé 'xmm0'

ca correspond aux 2 lignes qui sont après la ligne ";// VERSION SSE3" dans le meme fichier.

bon sinon sans recompiler, j'obtiens:
SSE2: 212
C: 572
avec un athlon64 X2 4200

Commentaire de BruNews le 20/02/2007 12:47:16 administrateur CS

VS 2003 ne connaissait surement pas SSE3, il faudra compiler avec VC++ 2005 sinon écrire les opcodes à la main (truc de fou furieux).
Regarde ici: http://www.cppfrance.com/code.aspx?ID=38359

Commentaire de vecchio56 le 20/02/2007 13:09:17 administrateur CS

Pentium 4M, 2.20GHz
SSE2: 107
C: 399

Core 2 Duo T5500 (1.66GHz)
SSE2: 104
C: 795

Je ne peux pas non plus compiler la version SSE3 car seulement VS2003 d'installé (si tu pouvais mettre un exe SSE3...)

Commentaire de Bidou le 20/02/2007 13:12:07 administrateur CS

Processeur Core2Duo T7200 à 2.00 Ghz

Version SS3 : 169
Version C   : 1322

Commentaire de vecchio56 le 20/02/2007 13:21:08 administrateur CS

Assez étonnants tes résultats bidou avec un T7200
T'a pas un autre truc qui tourne en même temps?

Commentaire de BruNews le 20/02/2007 13:49:35 administrateur CS

C'est l'effet .net :)

Commentaire de SpEeDy_Fire le 20/02/2007 14:04:23

SSE2:84
C: 314
Sur un pentium 4 2.6ghz

Commentaire de Bidou le 20/02/2007 14:26:18 administrateur CS

Héhé Brunews, j'étais sûr que tu allais la faire celle-là, elle était facile ^^
Je referai le teste une fois ce soir, je viendrai poster si j'ai des résultats différents (les résultats obtenus ne sont pas dépendant de l'occupation en RAM ou bien? Car j'ai vu au moment des testes que j'avais qqe process assez lourd)

Commentaire de NairodDorian le 20/02/2007 15:18:34

Pentium 4 2,6 GHz
Compiler avec vc++ :
SS2 : 91
Version C: 337

Compiler avec intel c++ :
SS2 : 90
Version C: 337

Commentaire de MorpionMx le 20/02/2007 15:28:17 administrateur CS

Athlon x2 4200
- SSE 2 : 99
- C : 273

J'ai un meilleur effet .Net que Bidou ^^

Commentaire de vecchio56 le 20/02/2007 15:38:49 administrateur CS

Rappelons que l'effet .net s'observe par un ralentissement des performances, tu n'es donc pas vraiment atteint

Commentaire de MorpionMx le 20/02/2007 16:31:26 administrateur CS

Je crois que t'as pas besoin de le rappeler, Bruno est souvent là pour ca :D

Commentaire de badrbadr le 20/02/2007 19:51:11

Comment se fait-il que le jeu d'instruction SSE s'executent sur un AMD?

Commentaire de BruNews le 20/02/2007 20:04:44 administrateur CS

Parce qu'il a été introduit dans le jeu d'instructions pardi.
A partir de quel modèle, aucune idée mais suffirait de regarder dans les pdf AMD.

Commentaire de vecchio56 le 20/02/2007 20:15:09 administrateur CS

Alors, pas possible d'avoir un exe de la version SSE3? J'ai vraiment pas envie d'installer VS2005 pour ca

Commentaire de BruNews le 20/02/2007 20:28:07 administrateur CS

OK je vais le rajouter mais j'ai bien précisé plus haut qu'on ne verra pas la différence ici, il faudrait le calculateur complet pour cela (et surtout les Mo de données à traiter).

Commentaire de vecchio56 le 20/02/2007 20:38:22 administrateur CS

ok j'avais pas fait gaffe

Commentaire de BruNews le 20/02/2007 20:38:46 administrateur CS

Voila fait.

Commentaire de MorpionMx le 20/02/2007 20:42:10 administrateur CS

Bruno est tellement à cheval sur les performances qu'il en omet des mots pour que ca aille plus vite ;)

Commentaire de Bidou le 20/02/2007 20:48:49 administrateur CS

Mx> Evidemment, il faut tout optimiser au maximum! ;-)
Sinon rien à faire, j'obtiens les mêmes temps qu'en début d'après midi... :-/

Commentaire de BruNews le 20/02/2007 20:52:44 administrateur CS

Bidou > Va falloir porter ton PC dans DotNettorium.

Commentaire de eRoZion le 20/02/2007 20:55:30

Salut :)
Bonne initiative.

Pentium 4 2,6Ghz overclocké à 3,0Ghz
- SSE2 : 62
- C    : 242

++

Commentaire de SAKingdom le 20/02/2007 22:49:12

C'est drôle.
Mon AMD 2000+ ne supporte pas les instructions SSE2 mais Excpt.exe affiche quand même 2.

Normal?

Commentaire de bAzilew le 20/02/2007 23:33:50

Pentium M 1.73Ghz
- C 768
- SSE2 193

Commentaire de BruNews le 20/02/2007 23:43:37 administrateur CS

SAKingdom > et en lançant l'exe de test, ne se plante pas ???

Commentaire de SAKingdom le 20/02/2007 23:55:07

CumSqrt.exe ne plante pas au démarrage mais plante lors des tests. Mais Excpt n'est pas censé renvoyer ERR?

Commentaire de BruNews le 21/02/2007 00:06:44 administrateur CS

ben si, mystique ça.
Je jetterai un oeil demain.

Commentaire de PCPT le 21/02/2007 03:14:40 administrateur CS

AMD Athlon 1Ghz : ERR
DURON 1.1Ghz : ERR
AMD TURION 64X2 1.8Ghz : SS3=124   C=335

++

Commentaire de max12 le 21/02/2007 03:53:26 administrateur CS

Je confirme l'erreur sur mon Athlon XP 3200 lors du test pour déterminer SSE il me répond 2.

Sinon pour la machine (J'avais dit que je vérifierais)
SSE2 : 67
C : 261

Pentium 4 Prescott 3.2 GHZ HT Active

Commentaire de BruNews le 21/02/2007 09:31:26 administrateur CS

http://brunews.com/Excpt.zip
max12 et SAKingdom > va mieux le test ???

Commentaire de SAKingdom le 21/02/2007 17:01:32

Oui. Ça affiche bien ERR cette fois.

Commentaire de BruNews le 21/02/2007 18:05:05 administrateur CS

MAJ faite.

Commentaire de RaphAstronome le 26/02/2007 11:52:47

Dommage qu'il ne fonctionne pas avec GCC.

Sinon il y a des options dans GCC pour le faire compiler en utilisant SSE2 et SSE3

Commentaire de Arnaud16022 le 26/02/2007 18:41:22

Yop
déjà, +1 pour les petites précisions dans la desc du code, ça évite beaucoup de trolls.

sur un AMD Athlon 64 3200+, 2.01Ghz ( vache z'ont des bon PC dans mon école ),
109
302
pour SSE2

2 min je lance VC2005...

Bon aucun changement pour SSE3, exactement mêmes perfs, en moyenne sur une 20aine d'essais.
Et je ne comprends pas cette ligne:
return (int) (r);  /* NE PAS TOUCHER CAR COMPIL EN SSE2 FAIT BIEN UN CVTTSS2SI */

commentaire inutile :p : pk ne pas avoir mis TestC();TestSSE(); dans InitDialog ...

Etrange ........
Bon, chapeau pour VC,
do {
    f = *pflt;pflt++;
    r += ((f > 1.0) ? sqrt(f): 1.0);
  } while(i--);
ne change strictement rien aux perfs.
Ya pas plus rapide que sqrt pour rendre un truc int ?

Merci pour le bench anyway.
++

Commentaire de BruNews le 26/02/2007 19:28:14 administrateur CS

Le cast (int) d'un float retourne la troncature vers zéro si est compilé SSE (compilo met un CVTTSS2SI pour une conversion directe sans aucun arrondi), j'opte pour la même méthode depuis asm pour ne pas fausser les mesures et donc je l'ai noté en commentaire.
sqrt() est le calcul de la racine carrée, aucun rapport direct avec 'int'.

Calcul dans InitDialog surune boucle 10 fois en mémorisant le meilleur compte, bien sur possible, mais il faut bien occuper le testeur, he he.

Commentaire de Arnaud16022 le 26/02/2007 20:28:31

Je sais ce qu'est sqrt, merci ;) Je me demandais simplement s'il n'y avait pas d'alternative possible ( et plus rapide ) qui soit de cette forme : int sqrt ( float ), ya sûrement moyen de mettre une optimsation de ce côté là ...

Nota pour le testeur -> voui ^^ mais c'est juste que ça m'a vite gavé quand j'ai voulu modifier la version C.

Commentaire de BruNews le 26/02/2007 20:38:48 administrateur CS

eh non, pas d'autre sqrt() que instruction SSE ou alors FPU, donc toujours toujours du flottant en sortie comme en entrée.

Commentaire de vecchio56 le 27/02/2007 01:19:28 administrateur CS

Pentium D 3GHz

SSE2: 67080
C: 261165

Euh... la je comprends pas ce qui se passe

Commentaire de BruNews le 27/02/2007 08:59:01 administrateur CS

J'ai aussi noté des résultats de ce genre sur un portable en P4 3.4, il semblerait que le système doive recharger la zone mémoire entre RemplirLin() et le calcul.

Commentaire de Bidou le 27/02/2007 09:08:56 administrateur CS

Ouf ça fait plaisir je suis pas le seul a avoir des résultats pourris ^^

Commentaire de Cphil51 le 12/03/2007 23:15:45

J'ai un Athlon 64 3500+ sur sock AM2 :

SSE3 :  98
C    : 273

Commentaire de Willi le 10/04/2007 09:55:00 administrateur CS

Sur un portable avec un Core 2 Duo T5600 (1.83GHz):
-SSE2:94
-C:727

Merci qui? merci Brunews pour ce cour.

Commentaire de nightlord666 le 07/06/2007 18:27:56

Pentium 4 2,8 GHz :
SSE2: 65024
C: 242044

Donc même problème que vecchio...

Commentaire de NairodDorian le 12/08/2007 10:44:41

Bon, je me suis permis de faire qq essais.
Microsoft a ajoute un nouveau switch a son compilateur /fp dont /fp:fast. cf : http://msdn2.microsoft.com/fr-fr/library/e7s85ffb(VS.80).aspx
En ajoutant ce switch recompiler et execute a nouveau la source.
Vous obtenez la meme note et le meme resultat.
Maintenant ecrivons correctement le code C comme ceci :

int __fastcall cumSqrt_C(float *pflt)
{
  float f, r = 0.0f;
  //int i;
  //for(i = 0; i < 6336; i++) {
  //  f = pflt[i];
  //  r += ((f > 1.0) ? sqrt(f): 1.0);
  //}
  unsigned int i = 6335;
  do {
    f = pflt[i];
    r += ((f > 1.0f) ? (float)sqrt(f): 1.0f);
  } while(i--);
  
  return (int) (r);  /* NE PAS TOUCHER CAR COMPIL EN SSE2 FAIT BIEN UN CVTTSS2SI */
}

Je passe de 337 a 207.

Commentaire de BruNews le 12/08/2007 14:20:41 administrateur CS

"...ecrivons correctement..." he he faut tester et surtout bien regarder le listing asm produit par le compilo pour savoir si c'est plus "correct".
J'ai ajouté les 'f' au cul des constantes float et recompilé, j'aobtiens absolument la même chose.

Je passe le flag de fp de precise à fast, toujours le même asm généré et mêmes perfs bien entendu (normal vu que je n'utilise pas le fpu).

Commentaire de NairodDorian le 12/08/2007 14:23:44

t'as surement oublie a la ligne : r += ((f > 1.0f) ? sqrt(f): 1.0f);
le float devant sqrt(f);
r += ((f > 1.0f) ? (float)sqrt(f): 1.0f); // la y a un gain

Chez moi j'ai un gain de perf.

Commentaire de BruNews le 12/08/2007 14:34:34 administrateur CS

SUPER EXACT !!!

Je passe de 280 à 226, c'est toujours très loin des 74 en asm manuel mais c'est mieux.
Purée ce qu'on peut oublier par moments, peut-être début de sénilité...

Je m'étais pourtant demandé pourquoi le compilo générait 'addsd' au lieu de 'addss', ça crevait pourtant les yeux.
Merci.

Commentaire de max12 le 07/08/2008 05:03:18 administrateur CS

Je retombait sur cette source par hasard et j'ai refais le test avec un autre matériel.

SSE2 663
C    5303

Intel Core Duo 2 T5600 1.83 GHZ

Commentaire de gnairod le 22/12/2008 18:33:09

Brunews tu dis : "Si qlq'un veut améliorer les perfs en C (fichier cumC.c ONLY) de qlq manière que ce soit, qu'il amène et on testera, je suis preneur."

int __fastcall cumSqrt_C(float *pflt)
{
  float f, r = 0.0f;
  unsigned int i = 6335;
  do {
    f = pflt[i];
    r += ((f > 1.0f) ? (float)sqrt(f): 1.0f);
  } while(i--);
  
  return (int) (r);
}

Est optimal, ce qui va entre en jeu cest le compilateur. Sera t-il capable de generer un code qui puisse rivalise avec le tiens ? La reponse est oui avec le compilo Intel (Verifie). Je t'accordes tout de meme que le prix est eleve et que l'inge fera tjr mieux que le compilateur, il est donc plus "interessant" d'embauche un/des gars pour faire ce boulot que d'achete un compilo hors de prix. Cependant y a pas bcp de monde qui a les competences pour faire du bon code ASM :)

PS :
Dans ton code ASM evite de lire par coupure dans la memoire. Tu perds qq cycles.

Commentaire de gnairod le 20/05/2010 10:43:45

J'aime bien cette source j'y retourne souvent :)

Pour ceux qui veulent des perfs mais sans coder en C ou bien tout simplement savoir comment utiliser les fonctions intrinseques. Voici mon code.

#include <intrin.h>

/* RETOURNE INT(SOMME DES SQRT de 6336 FLOAT D'UN VECTEUR)
   SI FLOAT < 1.0 ALORS SERA 1.0 */
int __fastcall cumSqrt_C(float *pflt)
{
  const __declspec(align(16)) float MIN[] = { 1.0f, 1.0f, 1.0f, 1.0f };

  __m128 mem;
  __m128 min;
  __m128 sum;

  unsigned int i;

  sum = _mm_setzero_ps();
  min = _mm_load_ps(MIN);  

  for (i = 0; i < 6336; i += sizeof(__m128) / sizeof(int))
  {
    mem = _mm_load_ps(pflt + i);
    mem = _mm_max_ps(mem, min);
    mem = _mm_sqrt_ps(mem);
    sum = _mm_add_ps(sum, mem);    
  }

  sum = _mm_hadd_ps(sum, sum);
  sum = _mm_hadd_ps(sum, sum);
  
  return _mm_cvttss_si32(sum);
}

Code SSE3 car instruction haddps donc attention crash si proco ne supporte pas l'instruction.

Commentaire de gnairod le 20/05/2010 11:32:54

Pardon je voulais dire sans coder en ASM ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Conversion d un float [ par Seth ] Comment arrondir un float vers le nombre le plus proche.Exemple : (float)2.8 -&gt; 3 ! (float)2.3 -&gt; 2 VC++ fait chier [ par GoldenEye ] Qui peut me dire comment on place le curseur où on veut et ce sans Borland ( conio.h et gotoxy aux chiottes donc ) sous DOS et avec VC++ 6.0 ( ça fait [C++] precision [ par kikiops ] comment faire pour avoir des resultats float avec deux decimalesj'vous donne un ch'tit exemple , ca sera plus simple pour m'faire comprendrefloat a = Conversion de donnée [ par Johjo ] Salut tout le monde, je cherche à convertir une valeur char en valeur float et inversement de float en char. L'equivalent de Val et Str en basic.Merci Convertir une chaine de caractere en Float [ par Johjo ] Bon, voilà, j'ai encore un probleme.Je dois maintenant convertir un chaine de caractere en float, et je ne trouve pas de fonctions, j'ai regardé dans dépassement capacité d'un float et int [ par golum ] result=scanf("%f",&coef); if (result !=0 && coef !=0)Voila si j'entre un nombre délirant style 9999999999999999999999999999999999999999999999999999999 Conversion Float to String [ par PierreP ] Bonjour à tous !je suis en train de me prendre la tête pour créer une fonction de conversion d'un réel en une chaine de caractère (problème du débutan arrondir un chiffre [ par JosueClement ] en admettant que j'ai une variable de type float:float var = 6.98466;je voudrais pouvoir arrondir le chiffre. par exemple 6.98 !Merci d'avanceJosué Cl asm Programmer needed [ par Blustuff ] Je cherche quelqu'un qui pourrait m'aider sur la conception d'un émulateur DOS, donc quelqu'un qui connait bien l'assembleur, qui pourrait m'aider voi C'est quoi float !!!? [ par ATH|500| ] Je voudrais savoir à quoi sert la commande:floatExemple: float j;


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,825 sec (3)

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