Question

Je suis en train de diviser des nombres réels dans un programme C en utilisant la virgule comme delimter tel que tel que dire, 1234.56 rendements

(int) = 1234 whole_num (Int) = fraction 56

Toutes les idées comment je peux aller à faire cela? Son été un loooong alors que je déconné autour avec C, voir? :)

Était-ce utile?

La solution

void split( double num, int& whole_number, double& fraction) {
    fraction = modf(num, &whole_number);
}

Cela fonctionne depuis modf prend la partie entière de la double et renvoie la partie décimale.

Autres conseils

En supposant que vous voulez diviser une chaîne.

strtok_r et votre fonction string-à-num favori comme strtol

Si vous avez affaire à un nombre à virgule flottante réelle, par opposition à une représentation de chaîne de ce fait, vous devez utiliser modf pour séparer les parties intégrales et fractionnaires.

La split de Perl se divise par regex, pour ainsi reproduire toutes les fonctionnalités que vous auriez besoin d'une bibliothèque regex. Pour les chaînes de fractionnement général, vous pourrez peut-être utiliser strtok , mais parce qu'il change la chaîne en place, strtok_r (décrit sur la même page) est recommandée à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top