Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

formule nombre décimal vers entier

Posté par
moem
15-07-20 à 13:38

Bonjour,
je voulais savoir, si quelqu'un sait, si il est possible, par une formule mathématique, de transformer un nombre décimal en son arrondi entier supérieur, mais qui ne changerai pas un nombre déjà entier.
C'est peut-être beaucoup demandé, mais je suis preneur de tout ce qui tournerait autour de ça.
Merci.

Posté par
moem
re : formule nombre décimal vers entier 15-07-20 à 13:44

par exemple,
3/2= 1.5,
moi j'aimerais obtenir 2.
La division euclidienne va dans ce sens sauf qu'elle n'arrondi pas lol, et alors elle donnerait 1 comme résultat,
on pourrait alors rajouter 1, mais pour les quotients entier le résultat serait alors faussé.

Posté par
moem
re : formule nombre décimal vers entier 15-07-20 à 13:51

En gros il s'agirait d'intégrer la division de 3 par 2 et dans faire ressortir l'arrondi supérieur,
et faire simplement ressortir le résultat de la division lorsque celui est déjà entier.
Merci.

Posté par
moem
re : formule nombre décimal vers entier 15-07-20 à 13:53

Et la division euclidienne arrondie je me suis trompé, mais elle arrondie a l'entier inferieur.

Posté par
moem
re : formule nombre décimal vers entier 15-07-20 à 13:59

Dsl une derniere clarification,
pour 3/2, la div euclidienne donnerait 1, vu que je veux obtenir 2, je pourrai tout simplement rajouter 1, sa marcherai pour tout les résultats décimaux,
mais pour 4/2 je veux obtenir 2, qui est déjà entier, donc rajouter 1 ne donnerai pas le résultat voulu.
Merci,

Posté par
weierstrass
re : formule nombre décimal vers entier 15-07-20 à 14:11

Bonjour,
La fonction mathématique que tu décris s'appelle "partie entière supérieure" (ou "ceiling" en anglais) et se note ceiling(x) = \lceil x \rceil. Elle fait exactement ce que tu décris. Pour la calculer de manière effective, soit tu as ton nombre sous forme décimale (par exemple 3.14159)
Dans ce cas, tu enlèves la partie fractionnaire (on obtient 3) et si la partie fractionnaire est différente de 0, on ajoute 1 (ici 0.14159 est différent de 0, donc 3+1 = 4)
L'arrondi à l'excès de 3.14159 est donc 4.

Soit tu as ton nombre sous forme d'une fraction. (Par exemple 9/4)
Dans ce cas, tu fais la division euclidienne. Ici 9 = 4*2 + 1 donc le quotient est 2 et le reste 1.
Si le reste est différent de 0, on ajoute 1, sinon on ne fait rien. Ici, le reste est 1, donc différent de 0. La partie entière supérieure est donc 2+1 = 3.

On peut aussi changer un peu la définition de la division euclidienne.
Dans la division euclidienne, pour diviser n par d, on cherche q et r tels que n = dq + r et tel que 0 \leq r < d. Il y a un unique q et un unique r qui marche.

Ici, si on cherche l'unique q et l'unique r tels que n = dq + r et tel que -d < r \leq 0, alors q sera la partie entière supérieure.
Par exemple, 9 = 4*3-1
On a bien 4 < 1 \leq 0, donc 3 est la partie entière supérieure. Ca marche aussi pour les entiers. Par exemple, si on prend 12/4, on a 14 = 4*3 + 0.
On a bien 4 < 0 \leq 0 donc 3 est la partie entière supérieure.

Posté par
moem
re : formule nombre décimal vers entier 15-07-20 à 14:47

Et bien déjà, une telle rapidité ça fait plaisir,
je pense être plutot intéressé par la division euclidienne, avec le r <= 0,
(par contre il y a des fautes de frappes dans les exemples de calculs je le dis au cas ou),
cependant moi je cherche une fonction f, avec x et y, tel que f(x,y) = ceiling(x),
ou encore, f(x,y) = le q de la div euclidienne de x/y avec r <= 0.

Ce que je veux dire c'est que,
"ceiling(x)" ne peut pas faire parti d'une série d'opération "arithmétique" (si je ne me trompe pas),
et pour la div eucl je chercherais un enchainement qui, pour x = yq - r, éliminerait (par magie) x, y et r pour ne garder que le quotient.

Mais peut-être que je rêve.
En tout cas merci de votre réponse et de vos éventuelles autres réponses!

Posté par
flight
re : formule nombre décimal vers entier 15-07-20 à 22:43

salut

comme ceci ? ... bout de code tapé sur vba excel :

Citation :
Sub arithmetique()
x = (4 / 2)
If x <> Int(x) Then        'int est la partie entiere
MsgBox Int(x) + 1
Else
MsgBox x
End If
End Sub

Posté par
flight
re : formule nombre décimal vers entier 15-07-20 à 22:46

..tu peux donner d'autre valeur à x  , dans le code précédent j'ai choisi x=4/2 , si x est différent de sa partie entière alors  je retourne  la partie entière de x  et j'ajoute  1. sinon je retourne x   dans ce cas la , le code retourne  2. , ....un test avec  9/2 retourne 5

Posté par
malou Webmaster
re : formule nombre décimal vers entier 16-07-20 à 08:39

Bonjour à tous,
moem, peux-tu renseigner ton profil s'il te plaît ?

attentionextrait de c_faq la FAQ du forum :

Q12 - Dois-je forcément indiquer mon niveau lorsque je poste un nouveau sujet ?



merci



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !