Spesso il risultato dei calcoli è un numero con un numero elevato di cifre decimali. Se questo numero viene utilizzato per ulteriori calcoli, può essere lasciato in questo modulo. Ma a volte è necessario arrotondare il numero, ad esempio, per visualizzare sulla pagina. Esistono diversi metodi per arrotondare i numeri in JavaScript.
Il metodo Math.round() arrotonda il valore a un numero intero.
Giro di matematica (numero)
Il numero è arrotondato secondo regole matematiche. Cioè, se dopo la virgola c'è un numero compreso tra 0 e 4, la parte frazionaria viene semplicemente scartata. E se dopo la virgola c'è un numero da 5 a 9, allora la parte frazionaria viene scartata e una viene aggiunta all'intera parte. esempio:
javascript:
Esistono altri due metodi che arrotondano un numero a un valore intero. Il metodo Math.floor() arrotonda per difetto. Scarta la parte frazionaria del numero. E il metodo Math.ceil() arrotonda per eccesso. Scarta la parte frazionaria e aggiunge uno alla parte intera. Esempio:
Ovviamente 5 - (-2) fa 5+2. Non dimenticare che non otterrai il numero 5 in questa formula. Il massimo sarà 4,999999999. I valori risultanti possono essere arrotondati alla precisione desiderata.
Se sono necessari solo numeri interi, i valori risultanti possono essere arrotondati per difetto al numero intero più vicino. Uno deve essere aggiunto al massimo in modo che anche questo massimo sia possibile. La formula è simile a questa:
integer = Math.floor (min + Math.random() * (max + 1 - min)
Produciamo i numeri da 10 a 15:
20 |
for (i=1; i= (maggiore o uguale a), 3); //falso console.log(5>=3); //VERO Quando si confrontano i numeri con una parte frazionaria, è necessario tenere conto degli errori che possono verificarsi durante questi calcoli. Ad esempio, in JavaScript, la somma dei numeri (0,2 + 0,4) non è uguale a 0,6: Console.log((0.2+0.4)==0.6); //falso Gli errori si verificano perché tutti i calcoli sono computer o altro dispositivo elettronico produce nel sistema a 2 numeri. Quelli. prima di eseguire qualsiasi azione, il computer deve prima convertire i numeri presentati nell'espressione nel sistema a 2 numeri. Ma nessun numero decimale frazionario può essere rappresentato esattamente nel secondo sistema numerico. Ad esempio, il numero 0,25 10 viene convertito esattamente in binario. 0,125 × 2 = 0,25 | 0 0,25 × 2 = 0,5 | 0 0,5 × 2 = 1 | 1 0,125 10 = 0,001 2 Ad esempio, il numero 0,2 10 può essere convertito nel sistema 2 solo con una certa precisione: 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 ... 0,2 10 = 0,001100110011... 2 Di conseguenza, questi errori influiranno sul calcolo della somma di due numeri e sui risultati del confronto. Quelli. si scopre che in realtà JavaScript vedrà questa voce come segue: 0.6000000000000001==0.6 Quando si calcolano o si visualizzano numeri con una parte frazionaria, è necessario specificare sempre la precisione con cui questo deve essere fatto. Ad esempio, confronta i numeri fino a 2 cifre decimali utilizzando i metodi toFixed() e toPrecision(): //metodo toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //metodo toPrecision() console.log((0.2+0.4).toPrecision(2)==(0.6).toPrecision(2)); //VERO Operazioni matematiche di baseJavaScript ha i seguenti operatori matematici: + (addizione), - (sottrazione), * (moltiplicazione), / (divisione), % (resto della divisione), ++ (aumenta il valore di 1), -- (diminuisce il valore di 1 ). 6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, cioè 6:3=2 => 6-3*2 => resto(0) 5%2 //1, cioè 5:2=2(.5) => 5-2*2 => resto(1) 7.3%2 //1.3, cioè 7.3:2=3(.65) => 7.3-2*3 => rest(1.3) //il segno del risultato dell'operazione % è uguale al segno del primo valore -9%2.5 //-1.5, cioè 9:2.5=3(.6) => 9-2.5*3 => resto(1.5) -9%-2.5 //-1.5, cioè 9:2.5=3(.6) => 9-2.5*3 => resto(1.5) -2%5 //-2, cioè 2:5=0(.4) => 2-5*0 => resto(2) x = 3; log della console(x++); //visualizza 3, quindi imposta y su 4 console.log(x); //4 x = 3; log della console(++x); //imposta 4 e restituisce x = 5; log della console(x--); // restituisce 5, y quindi imposta 4 console.log(x); //4 x = 5; log della console(--x); //imposta su 4 e restituisce Inoltre, ci sono operatori combinati in JavaScript: x+=y (x=x+y), x-=y (x=x-y), x*=y (x=x*y), x/= y (x=x/y), x%=y (x=x%y). x=3; y=6; x+=y; log della console(x); //9 x = 3; y=6; x-=y; log della console(x); //-3 x = 3; y=6; x*=y; log della console(x); //18 x = 3; y=6; x/=y; log della console(x); //0,5 x = 3; y=6; x%=y; log della console(x); //3 Consideriamo ora il metodo del pavimento (in traduzione - genere), che funziona in modo opposto al metodo ceil, ovvero arrotonda per difetto il numero frazionario.
var età = 35,97 ; età = Math.floor(età) ; /* Arrotonda per difetto il valore della variabile age */ document.write(età);
Come puoi vedere, il metodo floor ha arrotondato il numero 35.97 per difetto a 35 . Anche se 0,97 è maggiore di 0,5 (cm. ). Questa lezione ha esaminato i metodi dell'oggetto Math che consentono di arrotondare i numeri decimali frazionari. Ora devi fare i compiti. Il tuo compito è scrivere una funzione che accetta due parametri. All'output, la funzione dovrebbe emettere lo stesso array, ma allo stesso tempo, tutti gli elementi dell'array dovrebbero essere arrotondati usando il metodo dell'oggetto Math specificato nel secondo parametro. Matrice di origine: varnumberArray = ; All'inizio, la soluzione di questo compito può sembrare quasi identica alle soluzioni ai problemi dei compiti a casa delle prime tre lezioni. questo argomento. Ma non tutto è così semplice... Decisione #1 - Attenzione A seconda della condizione del problema, la funzione deve accettare due parametri: l'array originale e uno dei metodi: "round" , "ceil" o "floor" . Sulla base di questo, ho provato a fare questo...
function decimal (anyArray ,method ) /* Crea una funzione con due parametri */ per (i = 0 ; i< anyArray .length ; i ++ ) { anyArray = Math.method(anyArray); /* Utilizza uno dei metodi dell'oggetto Math per arrotondare l'elemento corrente dell'array */ documento.write(qualsiasiArray + " "
) decimal (numberArray, round ) /* Chiama la funzione e assegnale due parametri. Ma NON specificare un NOME di metodo come parametro di funzione */
In questa soluzione, creiamo una funzione con due parametri e, quando la chiamiamo, proviamo a specificare l'array originale e il NOME di un metodo come parametri della funzione: Ma non otterremo il risultato, poiché è IMPOSSIBILE specificare il NOME del metodo come parametro di funzione. Nota: non è un caso che i nomi dei metodi "round" , "ceil" e "floor" siano racchiusi tra virgolette nella dichiarazione del problema. decimal (numberArray, "round" ) - ma neanche questa notazione sarà corretta!!! Soluzione #2 - Correggere la soluzione precedente È possibile risolvere il problema specificando un parametro per la funzione.
varnumberArray = ; function decimal (anyArray ) /* Crea una funzione con un parametro */ per (i = 0 ; i< anyArray .length ; i ++ ) /* Перебираем элементы массива */ { /* Utilizza il metodo round dell'oggetto Math per arrotondare l'elemento corrente dell'array */ document.write (anyArray + " - Elemento arrotondato " ) /* Visualizza l'elemento ROUNDED dell'array */ decimal (numberArray ) /* Chiama la funzione e specifica un parametro: l'array originale */
Siamo riusciti a ottenere il risultato desiderato qui: il metodo round ha arrotondato tutti i numeri di . Ma la condizione non è soddisfatta, perché la funzione accetta solo un parametro. Soluzione #3 - Funzione con due parametri Qui il problema è risolto correttamente. Per questo, era necessario ricordare condizioni del soggetto in javascript e applicare molteplici condizioni contemporaneamente.
varnumberArray = ; funzione decimale (anyArray, metodo) se (metodo "
) Altrimenti se (metodo "
) altrimenti se (metodo "
) }
34.82 - elemento dell'array originale 12.9 - elemento dell'array originale 17.01 - l'elemento originale dell'array 78.51 - elemento dell'array originale Questa è la soluzione corretta per i compiti. Qui vengono specificati due parametri per la funzione in base alla condizione. Prova nell'ultima riga di questa soluzione: Soluzione #4 - Funzione con due parametri + metodo rapido Ho deciso di ottimizzare un po 'la soluzione precedente e ho aggiunto metodo rapido, che chiama finestra modale A che contiene un campo per l'inserimento delle informazioni. Ora, grazie a questo, sarà possibile inserire il nome di uno dei metodi round , floor o ceil nel campo di input e ottenere il risultato corrispondente.
varnumberArray = ; funzione decimale (anyArray, metodo) if (method == "round" ) /* prima condizione */ "
) Else if(method == "ceil" ) /* seconda condizione */ "
) else if(metodo == "floor" ) /* terza condizione */ "
) /* Aggiungi metodo prompt */ var method = prompt("Inserisci uno dei metodi: round, ceil o floor" ); if (method == "floor" ) /* prima condizione */ "
) else if (metodo == "round" ) /* seconda condizione */ "
) else if (method == "ceil" ) /* terza condizione */ "
) altro /* Altro... */ "
) decimal (numberArray, method ) /* Chiama la funzione */
Ecco come funzionano i metodi round , floor o ceil dell'oggetto Math, che arrotondano i numeri frazionari. Materiali tematici:
Aggiornato: 20/04/2021
103583
Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
Categorie del sito |