Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

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
21
22
23
24

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 base

JavaScript 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.
1. Un array costituito da numeri con frazioni.
2. Metodo di arrotondamento "round", "ceil" o "floor".

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 ++ )

{
document.write(qualsiasiArray
" )

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:
decimale (numberArray, round ) - in questo caso girare.

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 ++ ) /* Перебираем элементы массива */

{
documento.write(anyArray + "- elemento originario vettore
" ) /* Visualizza l'elemento corrente dell'array */

/* 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 */


35 - Elemento tondo


13 - Elemento tondo


17 - Elemento tondo


79 - Elemento tondo

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)
{
per (i = 0 ; i< anyArray .length ; i ++ )
{
document.write (anyArray + " - l'elemento originale dell'array
" );

se (metodo
{
anyArray = Math.round(anyArray);
document.write (anyArray + " - arrotondamento standard

" )
}

Altrimenti se (metodo
{

document.write (anyArray + " - round up

" )
}

altrimenti se (metodo
{

document.write (anyArray + " - round DOWN

" )
}

}
}
decimal (numberArray, "ceil" )/* Il secondo parametro della funzione - tra virgolette, specifica il nome di uno dei metodi */

34.82 - elemento dell'array originale
35 - arrotondare

12.9 - elemento dell'array originale
13 - arrotondare

17.01 - l'elemento originale dell'array
18 - arrotondare

78.51 - elemento dell'array originale
79 - arrotondare

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:
decimal (numberArray, "ceil" ) come secondo parametro della funzione, specifica i nomi degli altri metodi "round" e "floor" dell'oggetto Math.

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)
{
per (i = 0 ; i< anyArray .length ; i ++ )
{
document.write (anyArray + " - l'elemento originale dell'array
" );

if (method == "round" ) /* prima condizione */
{
anyArray = Math.round(anyArray);
documento.write(qualsiasiArray + "

" )
}

Else if(method == "ceil" ) /* seconda condizione */
{
qualsiasiArray = Math.ceil(qualsiasiArray );
documento.write(qualsiasiArray + "

" )
}

else if(metodo == "floor" ) /* terza condizione */
{
anyArray = Math.floor(anyArray);
documento.write(qualsiasiArray + "

" )
}

/* Aggiungi metodo prompt */

var method = prompt("Inserisci uno dei metodi: round, ceil o floor" );

if (method == "floor" ) /* prima condizione */
{
document.write ("Hai inserito un metodo " + metodo + " che arrotonda i numeri per difetto

" )
}

else if (metodo == "round" ) /* seconda condizione */
{
document.write ("Hai inserito il metodo " + method + " , che arrotonda i numeri secondo le regole standard

" )
}

else if (method == "ceil" ) /* terza condizione */
{
document.write ("Hai inserito il metodo " + method + " , che arrotonda i numeri per eccesso

" )
}

altro /* Altro... */
{
document.write("Non hai inserito o inserito un metodo per errore

" )
}

decimal (numberArray, method ) /* Chiama la funzione */

Ecco come funzionano i metodi round , floor o ceil dell'oggetto Math, che arrotondano i numeri frazionari.

Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
CONDIVIDERE: