Division arrondie, supérieur et inférieur
Forum d'archive d'entraide mathématique
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Bonjour,
J'ai besoin de savoir quelles sont les formules mathématiques - s'il y en
a mais je suppose que oui - pour les cas suivants (dans le cadre d'un
laboratoire informatique) de fonctions qui :
- retourne la valeur arrondie du quotient
- retourne le plus petit entier supérieur ou égal au quotient
- retourne le plus petit entier inférieur ou égal au quotient
Merci infiniment d'avance !
Julien
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Le 18/11/2003 18:50, Julien Mariller a écrit :
> Bonjour,
>
> J'ai besoin de savoir quelles sont les formules mathématiques - s'il y en
> a mais je suppose que oui - pour les cas suivants (dans le cadre d'un
> laboratoire informatique) de fonctions qui :
>
> - retourne la valeur arrondie du quotient
> - retourne le plus petit entier supérieur ou égal au quotient
> - retourne le plus petit entier inférieur ou égal au quotient
^^^^^
le plus grand, je suppose.
Tu disposes de quoi, comme fonctions ? Si tu n'as que les quatre
opérations, alors c'est difficile à faire, je pense.
Sinon, mettons que tu aies la partie entière par valeur inférieure,
appelons-la floor(x).
Alors la valeur arrondie est :
round(x) = floor(x+0,5)
Et la partie entière par valeur supérieure est :
ceil(x) = -floor(-x)
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Am 18/11/03 19:05, sagte Olivier Miakinen (
Olivier.Miakinen@evidian.com) :
> Tu disposes de quoi, comme fonctions ? Si tu n'as que les quatre
> opérations, alors c'est difficile à faire, je pense.
>
> Sinon, mettons que tu aies la partie entière par valeur inférieure,
> appelons-la floor(x).
>
> Alors la valeur arrondie est :
> round(x) = floor(x+0,5)hein ? pourquoi ce 0,5 ?
moi j'aurais dit : valeur approché à n décimales de A :
par défaut = floor(A*10^n)/10^n
par excès = [floor(A*10^n)+1]/10^n
> Et la partie entière par valeur supérieure est :
> ceil(x) = -floor(-x)= floor (x) + 1
par valeur inférieure floor(x)
albert
--
Bitte abnehmen die drei Sterne (***), um Albert Einstein (Junior) zu
antworten
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Le 18/11/2003 19:22, albert junior a écrit :
>[color=green]
>> Alors la valeur arrondie est :
>> round(x) = floor(x+0,5)
>
> hein ? pourquoi ce 0,5 ?[/color]
J'ai supposé que la question était « arrondie à l'entier le plus
proche », et répondu en conséquence.
[color=green]
>> Et la partie entière par valeur supérieure est :
>> ceil(x) = -floor(-x)
> = floor (x) + 1[/color]
Ça ne marche pas pour les entiers.
ceil(3) = 3
floor(3)+1 = 4
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Am 18/11/03 19:37, sagte Olivier Miakinen (
Olivier.Miakinen@evidian.com) :
[color=green]
>> hein ? pourquoi ce 0,5 ?>
> J'ai supposé que la question était « arrondie à l'entier le plus
> proche », et répondu en conséquence.
>[/color]
ok, je viens de comprendre
j'avais mal réflechi, désolé
albert
--
Bitte abnehmen die drei Sterne (***), um Albert Einstein (Junior) zu
antworten
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Le problème c'est que "aucun calcul intermédiaire ne devra être effectué en
virgule flottante" !!!
"albert junior" a écrit dans le message
de news:BBE02F1D.1B225%alberteinstein588***@hotmail.com...
> Am 18/11/03 19:37, sagte Olivier Miakinen (Olivier.Miakinen@evidian.com):
>
>[color=green][color=darkred]
> >> hein ? pourquoi ce 0,5 ?> >
> > J'ai supposé que la question était « arrondie à l'entier le plus
> > proche », et répondu en conséquence.
> >[/color]
> ok, je viens de comprendre
> j'avais mal réflechi, désolé
>
>
>
> albert
>
> --
>
> Bitte abnehmen die drei Sterne (***), um Albert Einstein (Junior) zu
> antworten
>[/color]
-
Anonyme
par Anonyme » 30 Avr 2005, 16:15
Le 18/11/2003 21:13, Julien Mariller a écrit :
> Le problème c'est que "aucun calcul intermédiaire ne devra être effectué en
> virgule flottante" !!!
Donc ta division retourne un entier, je suppose.
Je suppose aussi que c'est l'entier le plus proche par valeur
inférieure, floor(p/q). Est-ce exact ?
Pour en être sûr, donne-nous le résultat des divisions suivantes :
10/3
11/3
(-10)/3
(-11)/3
10/(-3)
11/(-3)
(-10)/(-3)
(-11)/(-3)
Je crois que la réponse pour l'arrondi sera :
round(p/q) = floor((2p+q)/(2q)).
En effet,
p/q + 0,5 = p/q + q/2q = 2p/2q + q/2q = (2p+q)/2q
-
Anonyme
par Anonyme » 30 Avr 2005, 16:16
Le 20/11/2003 15:59, Olivier Miakinen a écrit :
> Le 18/11/2003 21:13, Julien Mariller a écrit :
>[color=green]
>> Le problème c'est que "aucun calcul intermédiaire ne devra être effectué en
>> virgule flottante" !!!
>
> Donc ta division retourne un entier, je suppose.
>
> Je suppose aussi que c'est l'entier le plus proche par valeur
> inférieure, floor(p/q). Est-ce exact ?[/color]
Je viens de vérifier avec mon compilateur C (gcc), eh bien le résultat
est en fait l'entier le plus proche "dans la direction du 0",
c'est-à-dire que c'est par valeurs inférieures pour les nombres
positifs, mais par valeurs supérieures pour les négatifs.
> 10/3
> 11/3
> (-10)/(-3)
> (-11)/(-3)
Ces quatre-ci donnent 3
> (-10)/3
> (-11)/3
> 10/(-3)
> 11/(-3)
Ces quatre-là donnent -3 (et pas -4)
> Je crois que la réponse pour l'arrondi sera :
> round(p/q) = floor((2p+q)/(2q)).
Cette formule marche donc pour les nombres positifs. Si tu as besoin de
nombres négatifs aussi, précise-le.
On a même, si p >= 0 et q > 0,
- floor(p/q) ::= p/q
- round(p/q) ::= (2*p+q)/(2*q)
- ceil(p/q) ::= (p+q-1)/q
Cordialement,
Olivier Miakinen
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités