Заобляне числа в JavaScript

Защо да се развие в числа?

Един от най-интересните факти за JS е, че езикът, всъщност не се съхранява числа: номера са представени в двоична плаваща точка. Това, заедно с факта, че не всички фракции могат да бъдат представени като десетично число с краен брой цифри след десетичната запетая, означава, че JS могат да получат следните резултати (от конзолата):

В повечето случаи, от практическа гледна точка, тази грешка няма да направи разлика (грешка е един квинтилион 2), но това е малко разочароващо. Малко странен резултат може да се получи при работа с валута, процентни стойности или големина на файла единици. За да се избегне тази грешка, трябва да се закръгли на номер или въведете конкретен брой знака след десетичната запетая.

Закръгляване има много практически приложения: например, ако потребителят премести плъзгащ елемент обхват да не работи с десетични числа, то би било по-лесно да закръглят получената стойност до най-близкото цяло число.

Усъвършенстването десетични дроби

За рязане десетични числа може да се използва toFixed () и toPrecision. Двете техники вземат само един аргумент, който съответно определя броя на "значителни цифри" (т.е., общият брой на цифри в броя) или броя на знака след десетичната запетая:

Заобляне числа в JavaScript

Съвременните технологии за уеб програмиране

AngularJS, WebPACK, NodeJS, ReactJS, пишеща машина, Gulp, Git, Github.
Научете всичко за най-новите технологии в уеб програмиране

Ако не е посочен toFixed () аргумент, по подразбиране е зададена 0; Не знака след десетичната запетая, максималната стойност от 20.

Ако не е дадено toPrecision никакъв аргумент, броят не се променя.

вАЖНО СЪОБЩЕНИЕ

И двата метода toFixed () и toPrecision () върне заоблена представяне на низ резултат и не редица. Т.е. когато "добавяне" променливи закръглени и ще бъдат направени randNum наниз вместо допълнение:

Ако искате да се хвърли в резултат на номер, използвайте parseFloat:

(Имайте предвид, че броят 5 се закръглява, освен в редки случаи, както е описано по-долу.) Също така, методите toFixed () и toPrecision () са полезни, когато имате нужда цяло число атрибут на десетичната част. Това е особено полезно, когато се занимават с валути:

Имайте предвид, че ако броят на цифрите по-големи от аргумента toPrecision, тя ще бъде записана в научната форма (с мантиса и ред):

Как да се избегнат грешки при закръгляване на десетични числа

В някои случаи, toFixed toPrecision закръглена и 5 не са нагоре и надолу:

В резултат на посоченото по-горе трябва да бъде 1,01 вместо 1. Ако имате важна точността, бих ви препоръчваме да се реши от Джак L Мур, който използва изчисления експоненциални числа:

На MDN има още по-мощни решение.

Пресичането на десетични числа

Всички тези методи са показани закръглени десетични числа. За орязване положително число до два знака след десетичната запетая, тя се умножи по 100, нарязани и да си поделят резултат от 100:

Ако искате да добавите малко гъвкавост, можете да използвате се операция

В следващата статия ще кажа по-подробно за операции побитови.

Заобляне числа в JavaScript

Съвременните технологии за уеб програмиране

AngularJS, WebPACK, NodeJS, ReactJS, пишеща машина, Gulp, Git, Github.
Научете всичко за най-новите технологии в уеб програмиране

Усъвършенстването до най-близкия броя

За закръгляване на десетични числа нагоре или надолу до най-близкото цяло число използването Math.round ():

Имайте предвид, че "половината от стойността на" тип 0.5 се закръгля.

Закръглява надолу до най-близкото цяло число

Ако искате да се закръгли броя надолу, използвайте Math.floor:

Имайте предвид, че в този случай, закръглена надолу всички числа, дори отрицателни. Представете си небостъргач с безкраен брой етажи нагоре или надолу (по-долните етажи са отрицателни числа). Ако сте в асансьор между минус втория и третия етаж минус (стойността на -2.5), метод Math.floor ще ви отведе до -3 етаж:

Ако не искате отрицателни числа също се закръглява надолу, използвайте Math.trunc. Този метод се поддържа във всички съвременни браузъри), с изключение на IE / Edge):

На MDN също има три реда Полифем, който е добавена поддръжка Math.trunc за по-стари браузъри и IE / Edge.

Закръгляването до най-близкото цяло число

И обратното, ако искате да закръглите числото, използвайте Math.ceil. Отново, представете си един безкраен асансьор: Math.ceil винаги ви отведе до следващото горното ниво, независимо от броя на знаците:

Закръгляване нагоре или надолу до най-близкото кратно на

Ако искате да се закръгли броя до най-близкото кратно на пет, най-лесно да се създаде функция, която разделя на броя с 5, извиване на гърба си и да се умножаваш

Ако искате да закръглите номер за различни кратните, можете да промените функцията и да го давате като аргумент от двете стойности, броя и честотата:

За да извикате функция, трябва да определите два параметъра, огромният брой и мултиплициране:

За да закръгляне нагоре или надолу на мястото CEIL или подови функции.

Диапазон на регулиране за броя на

Това се случва много, когато стигнем редица X, и ние трябва да го карам в определен диапазон. Например, ние се нуждаем от число от 1 до 100, а ние имаме 123. Там ще дойде по-удобно методи мин (винаги се връща най-малката от набор от числа) и макс (най-голям брой в комплекта). Един пример с обхват от 1 до 100:

Тя може да бъде превърната в функция или разширение на класа на номер, възможността за удължаване на срока от първите, които предлагат Даниел Х. Мур:

Закръгляване на Гаус

Усъвършенстването на Гаус, която също се нарича закръгляване "банкер" конвергентна закръгляване, холандски закръгляване и странно дори, закръглена, този метод закръгляване без статистическа пристрастия; в обичайните номера закръгляване автоматично надценява. Закръгляне на Гаус номер, даден на най-близкото четно. Най-известен за мен решение у Тим надолу по:

Десетични числа в CSS

Плюс за нас е, че съвременните браузъри разбират десетичната стойност възлага блокови елементи, в това число лихви и пиксела.

Редакция: Екип webformyself.

Заобляне числа в JavaScript

Съвременните технологии за уеб програмиране

AngularJS, WebPACK, NodeJS, ReactJS, пишеща машина, Gulp, Git, Github.
Научете всичко за най-новите технологии в уеб програмиране

Най-IT новини и уеб разработки на нашия канал Телеграма

Заобляне числа в JavaScript