„JavaScript“ funkcijų dešimtainių problemų tvarkymas
Rašant „JavaScript“ funkcijas, dažnai kyla problemų, susijusių su dešimtainiais skaičiais, ypač atliekant padalijimo operacijas. Kūrėjams, kuriems reikalingas švarus ir sveikas skaičius kaip išvestis, labai svarbu suprasti, kaip valdyti šiuos dešimtainius rezultatus.
Šiame vadove išnagrinėsime, kaip modifikuoti „JavaScript“ funkciją, kad būtų užtikrinta, jog grąžinama vertė yra sveikasis skaičius, neatsižvelgiant į tai, ar pradinis skaičiavimas apima dešimtainius. Tai iššūkis, su kuriuo susiduria daugelis pradedančiųjų dirbdami su funkcijomis, kurios apima skaičiavimus, pvz., nustatant koeficientus ar vidurkius.
Problema dažnai kyla dalijant skaičius, kurie nesukuria sveikojo skaičiaus rezultato. Pavyzdžiui, apskaičiuojant mokinių vienam pedagogui vidurkį, galima gauti po kablelio skaičių, o tai tam tikrais atvejais gali būti nepageidautina. Šių dešimtainių skaičių pašalinimas arba suapvalinimas yra įprasta užduotis, siekiant pagerinti išvesties skaitomumą ir naudojimą.
Mes apžvelgsime procesą, kaip naudoti „JavaScript“ integruotas matematines funkcijas, pvz Math.round(), Math.floor(), ir Math.ceil(), norėdami pašalinti dešimtaines ir grąžinti sveikąjį skaičių. Pabaigoje suprasite, kaip formatuoti funkcijos grąžą, kad ji atitiktų jūsų konkrečius poreikius.
komandą | Naudojimo pavyzdys |
---|---|
Math.round() | Ši komanda suapvalina dešimtainį skaičių iki artimiausio sveikojo skaičiaus. Tai naudinga, kai reikia, kad padalijimo rezultatas būtų sveikasis skaičius, o ne slankiojo kablelio skaičius. Mūsų pavyzdyje Math.round(13.666) grąžina 14. |
Math.floor() | Jis suapvalina dešimtainį skaičių iki artimiausio sveikojo skaičiaus, net jei dešimtainė dalis yra didesnė nei 0,5. Math.floor(13.666) rezultatas būtų 13, iš esmės atmetant dešimtainę dalį. |
Math.ceil() | Ši komanda suapvalina dešimtainį skaičių iki kito sveikojo skaičiaus, neatsižvelgiant į jo dešimtainę dalį. Pavyzdžiui, Math.ceil(13.1) rezultatas yra 14. |
assert.strictEqual() | Naudojamas Node.js, šis metodas patikrina, ar dvi reikšmės yra griežtai lygios. Jis dažnai naudojamas vienetų testuose, siekiant patikrinti, ar funkcija grąžina laukiamą rezultatą. Mūsų scenarijuje assert.strictEqual(studentsPerAdmin(41,1,2), 14) patikrina, ar funkcija grąžina 14, kai iškviečiama su šiais argumentais. |
console.log() | Tai yra derinimo įrankis, spausdinantis pranešimus arba reikšmes į naršyklės konsolę. Tai ypač naudinga, kai rodomi dinaminiai pranešimai, pvz., console.log („Deja, ši klasė...“), kad naudotojams būtų perduodami funkcijų rezultatai. |
reikalauti () | Ši komanda Node.js naudojama moduliams arba bibliotekoms importuoti. Mūsų atveju const assert = reikalauti('assert'); naudojamas įtraukti įmontuotą tvirtinti modulis vienetų testams atlikti. |
Šablonų raidės | Šablonų literalai, pažymėti atgalinėmis varnelėmis (`), leidžia įterpti išraiškas eilutėse. Mūsų funkcija „Vidutiniškai yra ${average} studentų“ dinamiškai įterpia vidutinę reikšmę į eilutę. |
Skyriaus operatorius (/) | Šis operatorius padalija vieną skaičių iš kito. Mokiniuose / (mokytojai + padėjėjai) mokinių skaičius dalijamas iš mokytojų ir pagalbininkų sumos, kad būtų apskaičiuotas vidutinis mokinių skaičius vienam pedagogui. |
„JavaScript“ metodų, skirtų dešimtainių skaitmenų šalinimui, supratimas
Kai dirbate su „JavaScript“ funkcijomis, kurios grąžina po kablelio skaičių, pvz., „ studentaiPerAdmin funkcija, būtina suprasti, kaip pakeisti rezultatus, kad būtų gauti sveikieji skaičiai. Šioje funkcijoje vidutinis mokinių skaičius vienam pedagogui apskaičiuojamas mokinių skaičių padalijus iš mokytojų ir pagalbininkų sumos. Tačiau kadangi dalijimas dažnai lemia dešimtaines reikšmes, norint apdoroti šiuos rezultatus, reikia įvairių matematinių metodų. Iššūkis yra suapvalinti arba sutrumpinti dešimtainę dalį, kad ji atitiktų kontekstą, kai naudingas tik sveikas skaičius, pvz., pranešant, kiek mokinių skiriama vienam mokytojui.
Pirmasis pavyzdyje naudojamas metodas yra Math.round(). Šis metodas suapvalina dešimtainį skaičių iki artimiausio sveikojo skaičiaus. Pavyzdžiui, jei vidurkis yra 13,666, Matematika.apvalus grąžins 14, nes dešimtainis skaičius didesnis nei 0,5. Šis metodas naudingas tais atvejais, kai norite išlaikyti tikslumą ir supaprastinti skaičių. Kitas požiūris yra Math.floor(), kuris visada apvalina skaičių žemyn. Jis taikomas, kai norite visiškai atmesti dešimtainę dalį, pvz., grąžinti 13 tame pačiame pavyzdyje, neatsižvelgiant į dešimtainę reikšmę.
Kita vertus, Math.ceil() atlieka priešingą tikslą Math.floor(), visada suapvalinant skaičių iki artimiausio sveikojo skaičiaus. Šis metodas yra idealus, kai norite užtikrinti, kad vertė niekada nebūtų mažesnė už sveikąją dalį. Pavyzdžiui, jei vidurkis yra 13,1, Math.ceil() grįš 14, net jei dešimtainė dalis yra gana maža. Šie metodai suteikia lankstumo, atsižvelgiant į konkrečius jūsų skaičiavimo poreikius. Nesvarbu, ar tikslas yra suapvalinti iki artimiausio, suapvalinti žemyn ar suapvalinti, kiekviena funkcija atlieka skirtingą paskirtį.
Be to, naudojant assert.strictEqual() vieneto testuose užtikrina, kad funkcijos veiktų taip, kaip tikėtasi. Ši komanda yra svarbi norint patikrinti, ar jūsų funkcijos išvestis atitinka numatomą rezultatą įvairiais bandymo atvejais. Tai veikia kaip apsaugos priemonė, leidžianti kūrėjams greitai patikrinti, ar jų pakeitimai pažeidžia funkcionalumą, ar ne. Kartu su reikalauti () Norint importuoti reikiamus modulius, šie testai prideda papildomą patvirtinimo sluoksnį, užtikrinantį kodo patikimumą gamybinėse aplinkose. Naudojant šiuos metodus, kodas yra ne tik tikslus, bet ir nuodugniai išbandytas bei paruoštas įvairiems naudojimo scenarijams.
Keli būdai, kaip pašalinti dešimtainius ženklus iš „JavaScript“ funkcijos grąžinimo
„JavaScript“ naudojimas su „Front-End“ diegimu
// Solution 1: Using Math.round() to round to the nearest integer
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const roundedAverage = Math.round(average);
if (roundedAverage > 10) {
console.log(`There are on average ${roundedAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return roundedAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 14 students for each educator
Dešimtainių skaičių tvarkymas įvairiais būdais naudojant „JavaScript“.
„JavaScript“ naudojimas su įvairiais matematikos metodais
// Solution 2: Using Math.floor() to always round down
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const flooredAverage = Math.floor(average);
if (flooredAverage > 10) {
console.log(`There are on average ${flooredAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return flooredAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 13 students for each educator
„JavaScript“ funkcijos grąžinimo užtikrinimas
„JavaScript“ ir „Math.ceil()“ naudojimas apvalinimui
// Solution 3: Using Math.ceil() to always round up
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const ceiledAverage = Math.ceil(average);
if (ceiledAverage > 10) {
console.log(`There are on average ${ceiledAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return ceiledAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 14 students for each educator
Bandomasis scenarijus, skirtas tikrinti galiojimą įvairiose aplinkose
„Node.js“ galinio patvirtinimo vienetų testai
// Unit Test for verifying all solutions
const assert = require('assert');
assert.strictEqual(studentsPerAdmin(41, 1, 2), 14); // Using Math.round()
assert.strictEqual(studentsPerAdmin(30, 1, 2), 10); // Using Math.floor()
assert.strictEqual(studentsPerAdmin(35, 1, 2), 12); // Using Math.ceil()
console.log('All tests passed!');
Dešimtainių skaičių tvarkymas sudėtinguose „JavaScript“ scenarijuose
Nors „JavaScript“ dažnai reikia apvalinti po kablelio skaitmenis, yra ir kitų scenarijų, kai norint valdyti kablelio skaitmenis reikia daugiau kontrolės. Viena iš svarbiausių technikų yra darbas su to Fixed (). Šis metodas leidžia nurodyti, kiek skaičių po kablelio norite, suapvalinti skaičių iki artimiausios reikšmės ir užtikrinti nuoseklų rodymo formatą. Pavyzdžiui, number.toFixed(2) visada pateiks skaičių su dviem skaitmenimis po kablelio, todėl jis idealiai tinka situacijose, kai svarbus tikslumas, pvz., apskaičiuojant valiutą ar atliekant mokslinius matavimus.
Kita svarbi koncepcija yra tai, kaip „JavaScript“ tvarko slankiojo kablelio aritmetiką. Dėl to, kaip skaičiai saugomi atmintyje, operacijos su dešimtainėmis dalimis kartais gali sukelti netikėtų rezultatų, ypač lyginant du slankiojo kablelio skaičius. Pavyzdžiui, 0.1 + 0.2 ne visai lygus 0.3 „JavaScript“, o tai gali sukelti problemų atliekant tam tikrus skaičiavimus. Šių niuansų supratimas gali padėti išvengti kodo klaidų, ypač atliekant finansinius ar statistinius skaičiavimus.
Be to, jei jums reikia visiškai pašalinti po kablelio skaičių be apvalinimo, galite naudoti bitų operatorius, pvz ~~ (dviguba tildė), kuri efektyviai sutrumpina dešimtainę skaičiaus dalį. Šis metodas veikia, nes bitų operatoriai konvertuoja skaičių į sveikąjį skaičių. Pavyzdžiui, ~~13.666 rezultatus ~~13.99. Šis metodas naudojamas rečiau, tačiau jis leidžia greitai pasiekti tikslą sutrumpinti dešimtaines dalis, kai našumas yra labai svarbus.
Dažni klausimai apie dešimtainių skaičių tvarkymą „JavaScript“.
- Kaip „JavaScript“ suapvalinti skaičių iki artimiausio sveikojo skaičiaus?
- Galite naudoti Math.round() suapvalinti skaičių iki artimiausio sveikojo skaičiaus. Pavyzdžiui, Math.round(13.6) grįžta 13.
- Kaip „JavaScript“ visada suapvalinti dešimtainį skaičių žemyn?
- Norėdami visada suapvalinti, galite naudoti Math.floor(). Pavyzdžiui, Math.floor(13.9) grįš ~~13.99, ignoruojant dešimtainę dalį.
- Koks yra geriausias būdas pašalinti po kablelio skaičių be apvalinimo?
- Naudojant bitų operatorių ~~ yra efektyvus būdas pašalinti po kablelio skaičių be apvalinimo. Pavyzdžiui, 13 rezultatus ~~13.99.
- Ar galiu valdyti „JavaScript“ skaitmenų po kablelio skaičių?
- Taip, galite naudoti toFixed() norėdami nurodyti, kiek skaičių po kablelio norite. Pavyzdžiui, 13.666.toFixed(2) grįš 13.67.
- Kodėl taip 0.1 + 0.2 nėra lygus 0.3 „JavaScript“?
- Taip yra dėl to, kaip „JavaScript“ tvarko slankiojo kablelio aritmetiką. Skaičiai saugomi taip, kad kartais atsiranda nedidelių tikslumo klaidų.
Paskutinės mintys apie dešimtainių skaičių tvarkymą „JavaScript“.
Kai dirbate su „JavaScript“, dešimtainių skaičių naudojimas kartais gali sukelti painiavą, ypač naudojant funkcijas, kurioms reikalingi sveikų skaičių rezultatai. Naudojant apvalinimo funkcijas, pvz Math.round(), arba dešimtainių skaičių sutrumpinimas naudojant bitų operatorius, suteikia kūrėjams lanksčius įrankius, leidžiančius efektyviai išspręsti šią problemą.
Įvaldę šiuos „JavaScript“ metodus, galėsite valdyti, kaip rodomos skaitinės reikšmės, ir užtikrinti, kad funkcijos pateiktų aiškius, tikslius rezultatus. Nesvarbu, ar apvalinama aukštyn, žemyn ar trumpinama, pasirinkus tinkamą metodą, jūsų kodas išliks tikslus ir skaitomas.
Šaltiniai ir nuorodos
- Išsamiau aptariamas naudojimas „JavaScript“ matematikos funkcijos patinka Math.round(), Math.floor(), ir Math.ceil() „JavaScript“ kablelio apvalinimui. MDN žiniatinklio dokumentai – „JavaScript“ matematika
- Nuoroda, naudojama paaiškinti elgesį slankiojo kablelio aritmetika „JavaScript“ ir kodėl kai kuriuose skaičiavimuose svarbus dešimtainis tikslumas. Slankaus kablelio vadovas
- Aprašomas bitų operatorių naudojimas siekiant sutrumpinti dešimtaines reikšmes be apvalinimo „JavaScript“. JavaScript.info – bitų operatoriai