Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

A számítások eredménye gyakran sok tizedesjegyet tartalmazó szám. Ha ezt a számot használjuk a további számításokhoz, akkor ebben a formában hagyhatjuk. De néha kerekíteni kell a számot, például az oldalon való megjelenítéshez. Számos módszer létezik a számok kerekítésére a JavaScriptben.

A Math.round() metódus egész számra kerekíti az értéket.

Matek forduló (szám)

A szám matematikai szabályok szerint kerekítve van. Vagyis ha a tizedesvessző után egy 0 és 4 közötti szám van, akkor a tört részt egyszerűen eldobjuk. És ha a tizedesvessző után egy 5-től 9-ig terjedő szám van, akkor a tört részt eldobjuk, és egyet hozzáadunk az egész részhez. példa:

JavaScript:

Van még két módszer, amely egy számot egész értékre kerekít. A Math.floor() metódus lefelé kerekít. Elveti a szám tört részét. És a Math.ceil() metódus felfelé kerekít. Eldobja a tört részt, és hozzáad egyet az egész részhez. Példa:

Természetesen az 5 - (-2) az 5+2. Ne felejtse el, hogy ebben a képletben nem kapja meg az 5-ös számot. A maximális összeg 4,999999999. A kapott értékek a kívánt pontosságra kerekíthetők.

Ha csak egész számokra van szükség, akkor a kapott értékeket lefelé lehet kerekíteni a legközelebbi egész számra. Egyet hozzá kell adni a maximumhoz, hogy ez a maximum is lehetséges legyen. A képlet így néz ki:

egész = Math.floor (min + Math.random() * (max + 1 - perc)

Adjunk ki számokat 10-től 15-ig:

20
21
22
23
24

for (i=1; i= (nagyobb vagy egyenlő), 3); //false console.log(5>=3); //igaz

A számok törtrésszel való összehasonlításakor figyelembe kell venni a számítások során előforduló hibákat.

Például a JavaScriptben a számok összege (0,2 + 0,4) nem egyenlő 0,6-tal:

Console.log((0,2+0,4)==0,6); //hamis

Hibák azért fordulnak elő, mert minden számítás számítógépes vagy egyéb elektronikai eszköz 2 számrendszerben termel. Azok. Mielőtt bármilyen műveletet végrehajtana, a számítógépnek először át kell alakítania a kifejezésben szereplő számokat 2-es számrendszerré. De a 2. számrendszerben egyetlen tört decimális szám sem ábrázolható pontosan.

Például a 0,25 10 számot pontosan binárissá alakítjuk.

0,125 × 2 = 0,25 | 0 0,25 × 2 = 0,5 | 0 0,5 × 2 = 1 | 1 0,125 10 = 0,001 2

Például a 0,2 10 szám csak bizonyos pontossággal konvertálható 2-es rendszerré:

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

Ennek eredményeként ezek a hibák befolyásolják két szám összegének kiszámítását és az összehasonlítási eredményeket. Azok. kiderül, hogy a JavaScript a következőképpen fogja látni ezt a bejegyzést:

0.6000000000000001==0.6

Törtrészes számok kiszámításakor vagy megjelenítésekor mindig meg kell adni, hogy ezt milyen pontossággal kell elvégezni.

Hasonlítsa össze például a számokat 2 tizedesjegyig a toFixed() és toPrecision() metódusokkal:

//method toFixed() console.log((0.2+0.4).toFixed(2)==(0.6).toFixed(2)); //true //toPrecision() metódus console.log((0.2+0.4).toPrecision(2)==(0.6).toPrecision(2)); //igaz

Alapvető matematikai műveletek

A JavaScript a következő matematikai operátorokkal rendelkezik: + (összeadás), - (kivonás), * (szorzás), / (osztás), % (osztás maradéka), ++ (érték növelése 1-gyel), -- (érték csökkentése 1-gyel) ).

6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, azaz 6:3=2 => 6-3*2 => rest(0) 5%2 //1, azaz. 5:2=2(.5) => 5-2*2 => pihenés(1) 7,3%2 //1,3, azaz. 7,3:2=3(,65) => 7,3-2*3 => rest(1,3) //a művelet eredményének % előjele megegyezik az első érték előjelével -9%2,5 //-1,5, azaz. 9:2,5=3(,6) => 9-2,5*3 => pihenés(1,5) -9%-2,5 //-1,5, azaz. 9:2,5=3(,6) => 9-2,5*3 => pihenés(1,5) -2%5 //-2, azaz. 2:5=0(.4) => 2-5*0 => pihenés(2) x = 3; konzolnapló(x++); //3-at jelenít meg, majd y-t 4-re állítja console.log(x); //4 x = 3; konzolnapló(++x); //4-et állít be, és x = 5-öt ad ki; konzolnapló(x--); //5-öt ad ki, y ezután 4-et állít be console.log(x); //4 x = 5; konzolnapló(--x); //4-re állítja be, és a kimenetek Ezen kívül vannak kombinált operátorok a JavaScriptben: 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; konzolnapló(x); //9 x = 3; y=6; x-=y; konzolnapló(x); //-3 x = 3; y=6; x*=y; konzolnapló(x); //18 x = 3; y=6; x/=y; konzolnapló(x); //0,5 x = 3; y=6; x%=y; konzolnapló(x); //3

Most fontolja meg a padló módszerét (fordításban - nem), amely a ceil módszer ellentétében működik, azaz. a törtszámot LE kerekíti.

var kor = 35,97 ;

kor = Math.floor(age) ; /* Az életkor változó értékének lefelé kerekítése */

dokumentum.ír(életkor);

Mint látható, a padló módszer a 35,97-et 35-re kerekítette. Annak ellenére, hogy 0,97 nagyobb, mint 0,5 (cm.).

Ez a lecke a Math objektum módszereit vizsgálta, amelyek lehetővé teszik a tört decimális számok kerekítését.

Most meg kell csinálni a házi feladatot.

Az Ön feladata, hogy írjon egy függvényt, amely két paramétert vesz fel.
1. Törtszámokból álló tömb.
2. Kerekítési módszer "kerek", "mennyezet" vagy "padló" .

A kimenetnél a függvénynek ugyanazt a tömböt kell kiadnia, ugyanakkor a tömb minden elemét kerekíteni kell a második paraméterben megadott Math objektum metódusával.

Forrástömb:

varnumberArray = ;

E feladat megoldása elsőre szinte azonosnak tűnhet az első három óra házi feladatainak megoldásaival. ez a téma. De nem minden olyan egyszerű...

1. döntés – Figyelem

A probléma feltételétől függően a függvénynek két paramétert kell felvennie - az eredeti tömböt és a módszerek egyikét: "round" , "ceil" vagy "floor" . Ez alapján próbáltam ezt megtenni...

függvény decimális (anyArray ,method ) /* Hozzon létre egy függvényt két paraméterrel */
{

for (i = 0 ; i< anyArray .length ; i ++ )

{
document.write(anyArray
" )

anyArray = Math.method(anyArray); /* Használja a Math objektum egyik módszerét a tömb aktuális elemének kerekítéséhez */

document.write(anyArray + "

" )
}

decimális (numberArray, round ) /* Hívja meg a függvényt és adjon meg két paramétert. De NE adjon meg metódusnevet függvényparaméterként */

Ebben a megoldásban egy két paraméterrel rendelkező függvényt hozunk létre, melynek meghívásakor megpróbáljuk a függvény paramétereiként megadni az eredeti tömböt és az egyik metódus NAME-ját:
decimális (numberArray, round ) - in ez az eset kerek.

De az eredményt nem kapjuk meg, mivel LEHETETLEN a metódus NAME-ját függvényparaméterként megadni.

Figyelem: nem véletlenül szerepel idézőjelek között a "round" , "ceil" és "floor" metódusok neve a problémafelvetésben.

decimális (numberArray, "round" ) - de az ilyen jelölés sem lesz helyes!!!

2. megoldás – Az előző megoldás javítása

A probléma egy paraméter megadásával megoldható.

varnumberArray = ;

függvény decimális (anyArray ) /* Hozzon létre egy függvényt egy paraméterrel */
{

for (i = 0 ; i< anyArray .length ; i ++ ) /* Перебираем элементы массива */

{
document.write(anyArray + "- eredeti elem sor
" ) /* A tömb aktuális elemének megjelenítése */

/* Használja a Math objektum kerek módszerét a tömb aktuális elemének kerekítéséhez */

document.write (anyArray + " - Lekerekített elem

" ) /* A tömb ROUNDED elemének megjelenítése */
}

decimális (numberArray ) /* Hívja meg a függvényt és adjon meg egy paramétert - az eredeti tömböt */


35 - Lekerekített elem


13 - Lekerekített elem


17 - Lekerekített elem


79 - Lekerekített elem

Itt sikerült elérnünk a kívánt eredményt: a kerek módszerrel minden számot kerekítettek. De a feltétel nem teljesül, mert a függvény csak egy paramétert vesz fel.

3. megoldás – Két paraméteres funkció

Itt a probléma helyesen megoldódott. Ehhez emlékezni kellett tantárgyi feltételek javascriptbenés jelentkezz több feltétel egyidejűleg.

varnumberArray = ;

függvény decimális (anyArray ,method )
{
for (i = 0 ; i< anyArray .length ; i ++ )
{
document.write (anyArray + " - a tömb eredeti eleme
" );

ha (módszer
{
anyArray = Math.round(anyArray);
document.write (anyArray + " - normál kerekítés

" )
}

Else if(módszer
{

document.write (anyArray + " - felfelé kerekítve

" )
}

else if(módszer
{

document.write (anyArray + " - kerek lefelé

" )
}

}
}
decimális (numberArray, "ceil" )/* A függvény második paramétere - idézőjelben adja meg az egyik metódus nevét */

34,82 - eredeti tömbelem
35 - felfelé kerekítve

12.9 - eredeti tömbelem
13 - felfelé kerekítve

17.01 - a tömb eredeti eleme
18 - felfelé kerekítve

78.51 - eredeti tömbelem
79 - felfelé kerekítve

Ez a helyes megoldás a házi feladathoz. Itt két paraméter van megadva a függvényhez a feltételnek megfelelően.

Próbálja ki a megoldás utolsó sorában:
decimális (numberArray, "ceil" ) a függvény második paramétereként adja meg a Math objektum "round" és "floor" egyéb metódusainak nevét.

4. megoldás - Funkció két paraméterrel + prompt módszer

Úgy döntöttem, hogy egy kicsit optimalizálom az előző megoldást, és hozzátettem prompt módszer, amely hívja modális ablak A, amely egy adatbeviteli mezőt tartalmaz.

Most ennek köszönhetően a beviteli mezőbe beírhatja az egyik kerek , padló vagy mennyezet módszer nevét, és megkaphatja a megfelelő eredményt.

varnumberArray = ;

függvény decimális (anyArray ,method )
{
for (i = 0 ; i< anyArray .length ; i ++ )
{
document.write (anyArray + " - a tömb eredeti eleme
" );

if (módszer == "kerek" ) /* 1. feltétel */
{
anyArray = Math.round(anyArray);
document.write(anyArray + "

" )
}

Else if(method == "ceil" ) /* 2. feltétel */
{
anyArray = Math.ceil(anyArray );
document.write(anyArray + "

" )
}

else if(method == "floor" ) /* 3. feltétel */
{
anyArray = Math.floor(anyArray);
document.write(anyArray + "

" )
}

/* Prompt metódus hozzáadása */

var method = prompt("Adja meg a metódusok egyikét: round, ceil or floor" );

if (method == "floor" ) /* 1. feltétel */
{
document.write ("Ön megadta a " + metódus + " metódust, amely LEfelé kerekíti a számokat

" )
}

else if (method == "kerek" ) /* 2. feltétel */
{
document.write ("Az " + metódus + " metódust adtad meg, amely a számokat a szokásos szabályok szerint kerekíti

" )
}

else if (method == "ceil" ) /* 3. feltétel */
{
document.write ("A " + method + " metódust adta meg, ami felfelé kerekíti a számokat

" )
}

más /* Más... */
{
document.write("Nem vagy véletlenül adott meg egy metódust

" )
}

decimális (numberArray, metódus ) /* A függvény meghívása */

Így működnek a Math objektum round , floor vagy ceil metódusai, amelyek törtszámokat kerekítenek.

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: