Pages : 1
#1 Le 29/11/2021, à 18:35
- lanfust
une question de modulo
Bonjour,
Quand je fais le modulo d'un nombre négatif avec la calculatrice ubuntu.
-15 mod 26 = 11
-25 mod 26 = 1
-35 mod 26 = 17
-45 mod 26 = 7
-55 mod 26 = 23En c++
std::cout << -15 % 26 << std::endl;
std::cout << -25 % 26 << std::endl;
std::cout << -35 % 26 << std::endl;
std::cout << -45 % 26 << std::endl;
std::cout << -55 % 26 << std::endl;me donne
-15
-25
-9
-19
-3A quoi est dû cette différence ?
Dernière modification par lanfust (Le 29/11/2021, à 18:42)
Dual boot Windows 11 / Ubuntu 22.04
Créer une clé usb bootable
https://github.com/kramer04/usb_Bootable
Hors ligne
#2 Le 29/11/2021, à 18:49
- kamaris

Re : une question de modulo
À un bug ?
Ça marche bien avec Galculator par exemple.
Hors ligne
#3 Le 29/11/2021, à 19:19
- geole
Re : une question de modulo
Bonjour
A moins que cela soit un problème de définition ...
Le modulo entier qui retourne un nombre entre 0 et le diviseur (si celui-ci est négatif, le résultat sera négatif)
Le modulo tronqué qui retourne un nombre du même signe que le dividende.
Le modulo euclidien qui retourne toujours un nombre positif.
Hors ligne
#4 Le 29/11/2021, à 19:49
- kamaris

Re : une question de modulo
Ah oui d'accord, on prend par valeurs inférieures ou supérieures selon le signe du diviseur.
Ce que fait gnome-calculator correspondrait à ça : https://fr.wikipedia.org/wiki/Modulo_(o … A9matique)
Hors ligne
#5 Le 29/11/2021, à 21:38
- lanfust
Re : une question de modulo
et également ici https://fr.wikipedia.org/wiki/Division_euclidienne
Dual boot Windows 11 / Ubuntu 22.04
Créer une clé usb bootable
https://github.com/kramer04/usb_Bootable
Hors ligne
#6 Le 29/11/2021, à 23:32
- CM63
Re : une question de modulo
Oui, ce n'est qu'une convention. Apparemment Ubuntu n'a pas la même convention que la C++. Pour un mathématicien le résultat doit toujours être positif et compris entre 0 et n-1. Dans le cas présent -15 % 26 ce serait 11 et non pas -15 .
D'sous n'a mis, est-elle avare, frivole ou tellurique?
Hors ligne
Pages : 1