2010-01-12 7 views
0

Je travaille sur un format de ligne clairsemée compressée par blocs de matrice clairsemée. Je dois convertir un élément non nul en virgule flottante de 64 bits. J'ai besoin d'une syntaxe en c OU C++ pour cela?comment convertir un nombre décimal en nombre à virgule flottante de 64 bits dans le programme C?

+3

Quel est le type des éléments de la matrice clairsemée? –

+0

voir ma question est, je veux convertir la valeur entière en nombre à virgule flottante binaire 64 bits .. est là une syntaxe disponible pour cela? aussi bien quel est ce nombre flottant binaire .. ?? plz rply .. merci pour votre temps .. – Gauri

Répondre

1

Avez-vous enregistré votre numéro sous forme de chaîne? Si oui faire (cela fonctionnera dans les deux C et C++):

const char *number = "11.111"; // This the variable holding your number 
double num = atof(number); // This is your number saved as a double, that is usually 64 bit 

Si vous l'avez enregistré en tant que int, double, float vous pouvez simplement faire:

double num = other_variable; 

Encore une fois, cela fonctionnera à la fois C et C++.

+1

éviter atof - prefer strtod –

+0

Neil, pourquoi? [15 caractères] –

+0

Parce que strtod() (et strtol() d'ailleurs) est nécessaire pour ne pas produire de résultats inattendus sur le dépassement pendant la conversion. Atof() renvoie 0.0 à la fois pour la chaîne "0.0" et pour une entrée non valide. Alors que pour "double strtod (const char * str, char ** ptr)", si la valeur de ptr n'est pas (char **) NULL, la variable vers laquelle elle pointe est positionnée sur le caractère après le dernier nombre, le cas échéant, cela a été reconnu. Si aucun nombre ne peut être formé, * ptr est mis à str, et zéro est retourné. http://www.docs.hp.com/fr/B2355-60127/strtod.3C.html –

Questions connexes