Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Math : méthode statique trunc()

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

La méthode statique Math.trunc() retourne la partie entière d'un nombre en retirant toute partie fractionnaire.

Exemple interactif

console.log(Math.trunc(13.37));
// Sortie attendue : 13

console.log(Math.trunc(42.84));
// Sortie attendue : 42

console.log(Math.trunc(0.123));
// Sortie attendue : 0

console.log(Math.trunc(-0.123));
// Sortie attendue : -0

Syntaxe

js
Math.trunc(x)

Paramètres

x

Un nombre.

Valeur de retour

La partie entière de x.

Description

La façon dont Math.trunc() fonctionne est plus simple que les trois autres méthodes de Math : Math.floor(), Math.ceil() et Math.round() ; elle tronque (supprime) le point et les chiffres à sa droite, que l'argument soit un nombre positif ou négatif.

Puisque trunc() est une méthode statique de Math, elle doit toujours être utilisée avec la syntaxe Math.trunc(), elle ne doit pas être utilisée comme méthode d'un autre objet Math que vous avez créé (Math n'est pas un constructeur).

Exemples

Utiliser Math.trunc()

js
Math.trunc(-Infinity); // -Infinity
Math.trunc("-1.123"); // -1
Math.trunc(-0.123); // -0
Math.trunc(-0); // -0
Math.trunc(0); // 0
Math.trunc(0.123); // 0
Math.trunc(13.37); // 13
Math.trunc(42.84); // 42
Math.trunc(Infinity); // Infinity

Utiliser des opérations bit à bit pour tronquer les nombres

Attention : Ce n'est pas une prothèse d'émulation pour Math.trunc() en raison de cas limites non négligeables.

Les opérations bit à bit convertissent leurs opérandes en entiers 32 bits, ce dont les gens ont historiquement profité pour tronquer les nombres à virgule flottante. Les techniques courantes incluent :

js
const original = 3.14;
const truncated1 = ~~original; // Double négation
const truncated2 = original & -1; // Bit à bit AND avec -1
const truncated3 = original | 0; // Bit à bit OR avec 0
const truncated4 = original ^ 0; // Bit à bit XOR avec 0
const truncated5 = original >> 0; // Bit à bit décalé à droite avec 0

Attention au fait que c'est essentiellement toInt32, ce qui n'est pas la même chose que Math.trunc. Lorsque la valeur ne satisfait pas -231 - 1 < value < 231 (-2147483649 < value < 2147483648), la conversion provoque un dépassement.

js
const a = ~~2147483648; // -2147483648
const b = ~~-2147483649; // 2147483647
const c = ~~4294967296; // 0

Utilisez uniquement ~~ comme substitution de Math.trunc() lorsque vous êtes sûr que la plage d'entrée se situe dans la plage des entiers 32 bits.

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-math.trunc

Compatibilité des navigateurs

Voir aussi