Converti un numero float in Int in JavaScript

Nithin Krishnan 30 gennaio 2023
  1. Converti Float in Int usando la funzione parseInt() in JavaScript
  2. Converti Float in Int usando Number.toFixed() in JavaScript
  3. Converti Float in Int con operatori bit per bit in JavaScript
  4. Converti Float in Int usando le funzioni di libreria Math in JavaScript
  5. Conclusione
Converti un numero float in Int in JavaScript

In JavaScript, abbiamo molti modi per convertire float in int, come mostrato di seguito.

  • La funzione parseInt()
  • Il metodo Number.toFixed()
  • Conversione con operatori bit per bit
    • Applicazione di OR per 0
    • Utilizzo del doppio operatore NOT
    • SHIFT a destra di 0
  • Utilizzo delle funzioni di libreria Matematica in javascript
    • Math.floor()
    • Math.round()
    • Math.ceil()
    • Math.trunc()

Converti Float in Int usando la funzione parseInt() in JavaScript

parseInt() è ampiamente utilizzato in JavaScript. Con questa funzione, possiamo convertire i valori di diversi tipi di dati nel tipo intero. In questa sezione vedremo la conversione di un numero float in un numero intero. La sintassi di parseInt() è parseInt(<value>). Il codice seguente mostra il comportamento della funzione.

console.log(parseInt(123.321));
console.log(parseInt(123.998));

Produzione:

123
123

Osservazioni

  • Per ulteriori informazioni, fare riferimento a i documenti MSN.
  • Durante la conversione dei valori float, parseInt() scarta i decimali e non li considera restituendo la parte intera del numero del valore float.
  • parseInt() restituisce NaN nel caso in cui la conversione non sia possibile. Quindi, è bene includere un controllo isNaN() durante la conversione dei valori in modo che il codice sia sicuro e non si interrompa.

Converti Float in Int usando Number.toFixed() in JavaScript

Number.toFixed() si comporta in modo leggermente diverso da parseInt(). Arrotonda il numero al valore intero più vicino. Quindi, attenzione al fatto di arrotondamento. Number.toFixed()arrotonda il valore decimale di float minore di .5 al valore intero inferiore. Se il valore decimale è 0.5 o maggiore, il numero in virgola mobile verrà arrotondato al successivo valore intero più alto. La sintassi per la funzione Number.toFixed() è la seguente.

numberObject.toFixed(<number of digits>);

Di solito, abbiamo bisogno di passare un parametro a questa funzione che specifica il numero di cifre dopo il decimale nell’output. Per il nostro scopo, non abbiamo bisogno di menzionare alcun argomento poiché, per impostazione predefinita, il parametro come 0, quindi restituisce un valore intero. Fare riferimento ai seguenti codici di esempio.

console.log( (123.123).toFixed(2) );
console.log( (123.123).toFixed() );
console.log( (123.98).toFixed() );
console.log( (123.49).toFixed() );
console.log( (123.5).toFixed() );

Produzione:

123.12
123
124
123
124

Osservazioni

  • A differenza del metodo parseInt(), Number.toFixed() non è famoso per l’estrazione della parte intera, poiché esegue un arrotondamento del valore float passato come parametro.
  • Si può usare questa funzione per convertire solo valori float. A differenza della funzione parseInt(), la conversione del valore di stringa in float non è supportata da Number.toFixed().

Converti Float in Int con operatori bit per bit in JavaScript

Abbiamo visto i metodi di parseInt() e di Number.toFixed(). Entrambi eseguono alcune operazioni interne per ottenere i risultati desiderati. Gli operatori bit per bit sono efficienti, veloci e performanti nel convertire i valori float in un numero intero rispetto ai due metodi. Possiamo usare i seguenti operatori bit per bit per la conversione.

Applicazione di OR per 0

Possiamo usare l’operatore OR bit per bit per ottenere l’intera parte numerica di un numero in virgola mobile. Gli operatori bit per bit funzionano a livello binario. Converte il numero dell’operando in binario, quindi viene eseguita l’operazione OR bit per bit. L’applicazione di OR con 0 a qualsiasi numero a virgola mobile nell’intervallo accettabile restituirà l’intera parte numerica del valore a virgola mobile. Fare riferimento agli esempi seguenti.

console.log(123.321 | 0);
console.log(123.5432 | 0);
console.log(123.921 | 0);
console.log(216 | 0);
console.log(-321.456 | 0)

Produzione:

123
123
123
216
-321

Utilizzo del doppio operatore NOT

Un altro operatore bit per bit è l’operatore NOT, rappresentato dal segno ~. Essendo un operatore unario, possiamo usare l’operatore NOT bit per bit per eliminare la parte decimale in un numero float. L’operatore NOT, a livello binario, inverte i valori dei bit binari (restituendo 0 per un 1 bit e 1 per un valore 0 bit). Significa che se un numero è rappresentato in binario da 10110, applicando NOT ad esso si ottiene il valore invertito 01001. Applicando nuovamente la funzionalità NOT, vengono restituiti i bit originali (10110) del numero. Quindi, applicando due volte l’operatore NOT si restituisce il valore numerico e, durante il processo, non cambia il numero se è un numero intero. Ma per un valore float, applicare due volte l’operatore NOT restituirà solo la parte intera del numero float. I seguenti esempi chiariscono questo fatto.

console.log(~~(123.321));
console.log(~~(123.53));
console.log(~~(23.97));
console.log(~~(-23.97));
console.log(~~(-0.97));

Produzione:

123
123
23
-23
0

Spostamento a destra di 0

Possiamo applicare l’operatore di spostamento a destra bit per bit (rappresentato dai caratteri >>). Convertirà il valore float in un numero intero. Sotto a livello binario, l’operatore SHIFT bit per bit a destra sposta i bit binari dell’operando a destra di un conteggio specificato dal secondo operando. Quindi, ignora i bit che traboccano a destra. In tal modo, la funzione preserva il valore del segno del numero. I seguenti codici rappresentano il funzionamento dell’operatore SHIFT destro.

console.log(123.321 >> 0);
console.log(123.53 >> 0);
console.log(23.97 >> 0);
console.log(-23.97 >> 0);
console.log(-0.97 >> 0);

Produzione:

123
123
23
-23
0

Osservazioni

  • Gli operatori bit per bit sono più veloci in quanto sono più vicini al linguaggio macchina e non hanno bisogno di eseguire controlli o operazioni aggiuntive come farebbero internamente da parseInt() o Number.toFixed().
  • Operatori bit per bit come OR, NOT ecc., Quando applicati su numeri grandi, possono dare risultati inaspettati. Il valore massimo supportato per ottenere il valore decimale troncato è 2147483647 (231-1). Qualsiasi numero superiore a 2147483647 darà risultati imprevisti.
  • In JavaScript, i numeri in virgola mobile sono rappresentati da 64 bit, con un bit riservato per preservare il valore del segno (positivo o negativo), 32 bit per l’intera parte del numero. Gli operatori bit per bit operano sui numeri a 32 bit con segno ignorando il valore decimale. Quindi, otteniamo la parte del numero intero del valore float.

Converti Float in Int usando le funzioni di libreria Math in JavaScript

Possiamo usare la libreria JavaScript Math, che ha varie funzioni per ottenere numeri interi da numeri in virgola mobile. A differenza degli operatori bit per bit, questi offrono funzionalità aggiuntive basate su requisiti come l’arrotondamento dei valori ai numeri più vicini, il troncamento dei valori, ecc.

Conversione con Math.floor()

La funzione Math.floor() arrotonda il valore passato come parametro al successivo valore intero inferiore. La sintassi di Math.floor() è Math.floor(<float value>). Di seguito sono riportati alcuni esempi che mostrano l’utilizzo e il modo in cui converte un float in un numero intero.

console.log(Math.floor(123.321));
console.log(Math.floor(123.53));
console.log(Math.floor(23.97));
console.log(Math.floor(-23.97));
console.log(Math.floor(-0.97));

Produzione:

123
123
23
-24
-1

Il caso di numeri float negativi come Math.floor(-23.97) può sembrare confuso, ma la funzione converte giustamente il valore nel successivo numero intero inferiore, -24. Ricorda che maggiore è il valore numerico di un numero negativo, minore è il suo valore effettivo.

Conversione con Math.round()

A differenza della funzione Math.floor(), Math.round() approssima il valore passato nei parametri. Se il valore dopo il decimale è 5 o maggiore, il numero viene arrotondato all’intero successivo più alto. Altrimenti, se il valore dopo il decimale è minore di 5, viene arrotondato all’intero inferiore. Quindi, in base al valore dopo il punto decimale, la funzione Math.round() può comportarsi in modo simile alle funzioni Math.floor() o Math.ceil(). Di seguito sono riportati alcuni esempi con Math.round().

console.log(Math.round(123.321));
console.log(Math.round(123.53));
console.log(Math.round(23.97));
console.log(Math.round(-23.97));
console.log(Math.round(-0.97));

Produzione:

123
124
24
-24
-1

Conversione con Math.ceil()

La funzione Math.ceil() si comporta in modo opposto alla funzione Math.floor(). Invece di arrotondare al numero intero inferiore successivo come in Math.floor(), Math.ceil() restituisce il valore intero più alto successivo. Di seguito sono riportate alcune conversioni con Math.ceil().

console.log(Math.ceil(123.321));
console.log(Math.ceil(123.53));
console.log(Math.ceil(23.97));
console.log(Math.ceil(-23.97));
console.log(Math.ceil(-0.97));

Produzione:

124
124
24
-23
-0

Conversione con Math.trunc()

Come suggerisce il nome, la funzione Math.trunc() tronca il valore decimale e restituisce l’intera parte numerica del valore float. Questo metodo può essere considerato simile agli operatori bit per bit discussi in precedenza. Qui non c’è arrotondamento agli interi più vicini. Invece, restituisce l’intera parte numerica del valore float così com’è. Di seguito sono riportati alcuni casi d’uso con Math.trunc().

console.log(Math.trunc(123.321));
console.log(Math.trunc(123.53));
console.log(Math.trunc(23.97));
console.log(Math.trunc(-23.97));
console.log(Math.trunc(-0.97));

Produzione:

123
123
23
-23
-0

Conclusione

Esistono vari modi per ottenere la parte intera del numero da un valore float. Gli operatori bit per bit sono più veloci nell’esecuzione poiché eseguono operazioni a livello binario senza i requisiti di conversione o qualsiasi altra elaborazione. parseInt(), Math.trunc() e gli operatori bit per bit (OR di 0, Double NOT, spostamento a destra di 0) danno il numero intero esatto come se strappassero il valore float al punto decimale e restituisce solo la parte intera del numero. Se siamo interessati a elaborare il numero float per arrotondarlo o ottenere il numero intero più vicino in base ai requisiti aziendali, sarebbe opportuno scegliere Number.toFixed(), Math.round(), Math.ceil() e le funzioni Math.floor().

Articolo correlato - JavaScript Integer