Computer 4 dummy

Informatica facile a portata di tutti

browserguidaJavascriptprogrammazione

Troncare numeri in JavaScript

La funzione per troncare i numeri con la virgola in JavaScript è Math.trunc().

Questa funzione non esegue alcun arrotondamento ma semplicemente rimuove tutti i numeri a destra della virgola. Resta quindi solamente la parte intera del numero.

Vediamo un piccolo esempio:

const num = 80.6
// modo classico
num < 0 ? var old = Math.ceil(num) : Math.floor(num);
// 80
// ES6 metodo
const es6 = Math.trunc(num);
// 80

Positivi e negativi

La funzione Math.trunc() taglia tutte le cifre alla destra della virgola senza fare alcun arrotondamento e senza fare alcuna distinzione se il numero è positivo o negativo.

  Math.trunc (80.9);  // 80 
  Math.trunc (80.5);  // 80 
  Math.trunc (80,1);  // 80 

  Math.trunc (-80,1);  // -80
  Math.trunc (-80,5);  // -80
  Math.trunc (-80,9);  // -80

E con le stringhe?

Ora vediamo alcuni esempi di cosa succede quando utilizziamo delle stringhe…

  Math.trunc ('80 .1' );  // --> 80 
  Math.trunc ( 'ciao');   // --> NaN 
  Math.trunc (NaN);       // --> NaN 
  Math.trunc (undefined); // --> NaN 
  Math.trunc ();          // --> NaN

Troncare utilizzando parseint

Gli stessi risultati possiamo ottenerli utilizzando la funzione parseint().

  parseInt (80,1);      // 80 
  parseInt (-80,1);     // -80 
  parseInt ('80 .1');   // 80 
  parseInt ('ciao');    // NaN 
  parseInt (undefined); // NaN 
  parseInt ();          // NaN

parseint() VS Math.trunc()

Se i risultati sono gli stessi è meglio usare parseint() oppure Math.trunc() ???

Come abbiamo visto negli esempi sopra i risultati sono identici ma se facciamo un analisi dal punto di vista delle prestazioni la funzione parseint() è meno performante perché prima di separare la parte intera da quella decimale deve essere fatta una conversione a stringa in conseguenza se si utilizzano dei numeri è meglio utilizzare la funzione Math.trunc().

In questo link trovate un piccolo script di esempio per rendervi conto della differenza:
https://jsperf.com/math-trunc-vs-parseint

Limiti della funzione parseint()

Come abbiamo detto la funzione parseint() per prima cosa converte in stringa l’argomento passato con la funzione toString() per molti casi questa operazione va benissimo, vediamo cosa succede però in questo caso:

var num = 1000000000000000000000.5;

var res = num.parseint();

console.log(res)

--> 1

Una volta fatta la conversione a stringa con toString() il risultato ottenuto è stato “1e+21” in notazione esponenziale, questo spiega perché abbiamo ottenuto “1” come risultato.

var num = 1000000000000000000000.5;

var res = num.toString();

console.log(res)

--> 1e+21

A questo punto considerando solo la parte intera del numero viene preso solo il numero 1 ed il resto dei caratteri viene troncato.
Quindi la funzione parseInt() è utilizzabile ma ha i suoi limiti, non solo dal punto di vista delle prestazioni questi sono i motivi per cui è meglio prendere in considerazione l’utilizzo delle funzioni Math.

Compatibilità

La maggior parte dei browser moderni supporta la funzione Math.trunc() a parte InternetExplorer. Se per forza dovete mantenere il supporto a browser più vecchi bisogna utilizzare i vecchi comandi con i relativi “problemi” e “difetti” che abbiamo analizzato prima.

Compatibilità dei browser per la funzione Math.trunc()

FONTE IMMAGINE: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Browser_compatibility

Scrivetemi un commento se avete trovato utile questo articolo o se pensate che abbia trascurato qualche dettaglio. GRAZIE !!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.