Obtenir le point décimal
Comment obtenir le point décimal d'un nombre? Par exemple:
Si j'ai 1.5 comment obtenir le nombre 5?
Désolé, je ne comprends pas la question. Quels sont les types que vous souhaitez gérer? Vous avez un double, et que vous souhaitez la représentation décimale après la virgule dans un int? Vous souhaitez avoir 5 stocké dans un int? Pourquoi 5 et pas 50?
parce que je suis seulement intéressé par le premier chiffre après le point.
... Pourquoi auriez-vous besoin le "premier chiffre après la virgule", mais rien d'autre?
parce que je suis seulement intéressé par le premier chiffre après le point.
... Pourquoi auriez-vous besoin le "premier chiffre après la virgule", mais rien d'autre?
OriginalL'auteur There is nothing we can do | 2010-12-13
Vous devez vous connecter pour publier un commentaire.
EDIT: ou plus simple et probablement plus rapide:
EDIT: pour le faire fonctionner aussi pour les nombres négatifs que vous pouvez faire:
que faire si nous ne connaissons pas la position du point décimal, je veux dire comment résoudre ce problème, en général, pour tout nombre à virgule comme 12.76, 164.7, 8759.128756, etc. ?
La solution fonctionne dans n'importe quelle situation, il vous donne toujours la première décimale.
OriginalL'auteur Juraj Blaho
Dire que vous avez
x=234.537
floor(x*10)
vous donne 2345vous suffit alors d'obtenir le reste d'une division par 10
Donc:
int firstDecimal = floor(x*10)%10
int firstDecimal = floor(x*10)%10
ne sera même pas compiler.floor
est de type à virgule flottante, mais%
nécessite non-float (int, unsigned, etc.).Je n'était pas de donner un langage de réponse spécifique. Ceci peut être utilisé dans presque n'importe quelle langue. Vous pouvez avoir besoin de cast en C++.
OriginalL'auteur nico
Ici:
Peut ou ne peut pas. Dépend de la plate-forme (matériel).
Je pensais la même chose!
J'ai juste mis à jour ma réponse pour travailler avec n'importe quel nombre.
juste abs() pour être sûr.. 😉
OriginalL'auteur BlackBear
Il y a une belle façon simple de le faire.
OriginalL'auteur Goz
Un moyen de travailler avec les nombres négatifs à l'aide de macro/appels de fonction:
static_cast<int>((n>=0?n:-n)*10)%10
. Mais je ne vois pas de raison, pourquoi ne pas appeler abs().Vous avez raison, de cette façon, c'est plus simple. Et il n'y a aucune raison de ne pas tous les abs (), sauf peut-être pour des raisons de performances, mais c'est négligeable. Je voulais juste montrer un moyen de le faire à l'aide des outils fournis par le langage, et non à la bibliothèque. Aucune raison pour l'utiliser static_cast<int> au lieu de juste (int), par le chemin?
Je vous remercie pour votre réponse. La raison de l'utilisation static_int au lieu de juste (int) est de marquer les places dans le programme où les conversions explicites sont effectuées. Il est fait pour des raisons de lisibilité.
OriginalL'auteur Sergei Tachenov