Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > A propos des double ? > Lecture du sujet

A propos des double ?

Question d'un curieux...

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Nakonjo # Posté le 06/07/2008 à 22:45:23
Ouai ... ... ...
Groupe : Membres
Bonjour tout le monde !

Je programmais un truc ce soir et j'ai eu un problème. Je devais passer un double en paramètre à une fonction et j'ai eu un petit problème. En fait mon nombre était très très grand : 1'000'000'000'000'000'000'000'000'000'000'000 (j'en rassure certains tout de suite j'ai pas mis les ' dans mon code^^). Mais au moment de la compilation :

Code : Console
memory.cpp:434: error: integer constant is too large for "long" type


Dans mon code j'avais :

Code : C++ - Avant
1
1000000000000000000000000000000000


Et je sais pas pourquoi, mais je me suis dit : double > nombre à virgule > VIRGULE ! Du mon code a été :

Code : C++ - Après
1
2
1000000000000000000000000000000000.0
// Notez l'ajout du ".0" qui changea tout !


Voila. Tout ça pour dire qu'un nombre à virgule peut être entier dans la logique nan ? 103.0 = 103 <=> 103 = 103.0
Donc je me demandais pourquoi mon ordinateur comprenait que c'était un double ou un float quand je lui mettais un ".", mais pas quand je ne lui en mets pas ?

Est-ce que je peux ne pas mettre ".0" si mon nombre est un double ou un float sans que mon compilateur ne m'insulte ?

Peut-être que non...

C++est partit pour Shinka !
 
Hors ligne Chlab_lak # Posté le 06/07/2008 à 22:59:23
Tendou : Royaume de dieu
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
si tu ecris 10 en dur dans le code, le compilateur va le prendre pour un int, donc si c'est plus grand que ce que tu peux mettre dans un int tu auras droit à une erreur

Code : C++
1
2
3
double a = 10; // cast implicite int -> double
double b = 10.0; // le compilateur sait que c'est un double -> pas de cast -> pas de problème
float c = 10.f; // c'est .f avec les float


respecte au maximum les suffixes, ca evite les erreurs et il me semble une fois avoir lu que le compilateur pouvait faire des optimisations au niveau de la mémoire, à voir
 
Hors ligne Nakonjo # Posté le 06/07/2008 à 23:02:39
Ouai ... ... ...
Groupe : Membres
Oki merci beaucoup !

Ca m'éviteras peut être de prochaines erreurs ! :p

Peut-être que non...

C++est partit pour Shinka !
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 283 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0371s (0.0163s)