Как посчитать сумму цифр числа в javascript
Перейти к содержимому

Как посчитать сумму цифр числа в javascript

сумма цифр числа javascript

Я получаю правильный ответ, я просто не полностью понимаю 2-ю функцию, а именно оператор while. Любая помощь будет принята с благодарностью. Спасибо!

4 ответа

Вторая функция использует оператор по модулю для извлечения последней цифры:

Когда последняя цифра извлекается, она вычитается из числа:

И это число делится на 10 :

Каждый раз, когда этот цикл повторяется, последняя цифра обрезается и добавляется к сумме.

Оператор по модулю возвращает одну цифру, если левая сторона меньше правой (что произойдет для любого 1-значного числа), то есть когда цикл прерывается:

Вот как начальная цифра добавляется к итогу.

Менее численная альтернатива будет такой:

Он буквально выполняет то, что вы пытаетесь сделать, то есть перебираете цифры числа (преобразовывая его в строку).

Я использую это 🙂

Не уверен, что вы имели в виду, в случае, если вы спрашивали о цикле while ..

Оператор while непрерывно выполняет блок операторов, в то время как определенное условие выполняется. Его синтаксис может быть выражен как:

Оператор while вычисляет выражение, которое должно возвращать логическое значение. Если выражение имеет значение true, оператор while выполняет оператор (ы) в блоке while. Оператор while продолжает тестировать выражение и выполнять его блок, пока выражение не станет ложным.

Цикл while извлекает цифры одну за другой из действительного числа и добавляет их. Попробуйте сделать каждый шаг вручную, и вы получите его.

Работа с числами в JavaScript

Александр Мальцев

В JavaScript в отличие от некоторых других языков имеется только один числовой тип number . В нём используется формат чисел с плавающей точкой двойной точности по стандарту IEEE 754.

То есть, в JavaScript нет отдельного формата для целых чисел. Все числа в JavaScript имеют плавающую точку.

Пример записи чисел:

Как показано в примере, в JavaScript числа можно записывать в экспоненциальной форме, а также задавать в других системах счисления: в восьмеричной (впереди 0 ) и шестнадцатеричной (впереди 0x ).

Узнать какой тип данных содержит переменная можно с помощью typeof :

Кроме чисел, формат number также содержит специальные числовые значения:

  • положительную бесконечность: Infinity ;
  • отрицательную бесконечность: -Infinity ;
  • не число: NaN .

Примеры выражений, результаты вычисления которых возвращают специальные числовые значения:

В JavaScript не возникают ошибки при выполнении математических операций. Если в результате вычисления получается очень большое число или очень маленькое выходящее за допустимые границы, то интерпретатор возвращает соответственно Infinity или -Infinity .

NaN возвращается, когда интерпретатор JavaScript не может вычислить математическую операцию. Например, когда мы попытаемся от числа 3 отнять строку ‘1rem’ .

Числовой тип number является примитивным типом. Но при этом к числам можно применять методы как к объектам. Это осуществляется посредством обёртки Number . Она содержит дополнительные значения и методы для работы с числами:

В этом примере мы применили к примитивному типу данных метод toString() как к объекту. При вызове метода числа автоматически оборачиваются в обёртку Number() , а у обёртки имеется метод toString() . Этот метода преобразует число в строку. Этот пример показывает, что числа ведут себя как объекты, хотя на самом деле ими не являются.

При этом использовать обёртку Number напрямую для создания чисел крайне не рекомендуется:

В этом примере num1 и num2 имеют разные типы.

Если необходимо использовать методы на числе, то его нужно обернуть в круглые скобки или поставить точку дважды:

Кстати, на самом деле в JavaScript 2 числовых типа данных. Второй тип был добавлен в спецификацию ECMAScript 2020 (11 редакция). Называется он bigint . Этот тип предназначен для представления очень больших целых чисел и на практике используется только для чисел, которые слишком велики для представления с помощью number .

Ограничения по максимальному размеру и точность чисел

В JavaScript при сложении чисел с дробной частью можно получить не то число, которое ожидали.

Погрешности происходят, потому что компьютер оперирует числами в двоичной системе счисления. Т.е. перед тем, как выполнить какие-то действия компьютер сначала должен преобразовать представленные в выражении числа в двоичную систему. Но, не любое десятичное число с дробной частью можно точно представить в двоичной системе счисления.

Например, число 0.2510 в двоичную систему преобразуется точно:

Например, число 0.210 можно преобразовать в двоичную систему только с определённой точностью:

В результате эти погрешности скажутся при вычислении выражений и это нужно учитывать при написании кода в JavaScript.

Для этого вычислениях или при выводе чисел с дробной частью необходимо всегда указывать точность, с которой это необходимо делать.

Например, перепишем код, приведённый выше с определённой точностью используя метод toFixed :

В этом примере, мы сначала с использованием метода toFixed(2) получили строковое представление числа, которое является результатом сложения чисел 0.2 и 0.4 , округленных до 2 знаков после точки. После этого с помощью метода parseFloat преобразовали текст в число и полученное значение присвоили переменной num .

Потеря точности может быть связана также с целыми числами, которые выходят за пределы безопасного диапазона:

Получить минимальное и максимальное безопасное целое число можно с помощью констант:

Теперь, если проверим число, приведённое выше, то увидим что оно больше безопасного:

Кроме этого, проверить находится ли целое число в пределах безопасного диапазона можно посредством метода isSafeInteger :

Основные арифметические операторы

В JavaScript имеются следующие математические операторы:

  • сложение: + ;
  • вычитание: — ;
  • умножение: * ;
  • деление: / ;
  • остаток от деления: % ;
  • возведение в степень: ** ;
  • увеличение значения переменной на 1: ++ ;
  • уменьшение значения переменной на 1: — .

Операторы ++ и — можно располагать как перед переменной, так и после неё:

Когда мы располагаем оператор ++ после переменной num , то сначала возвращается значение переменной, и только потом увеличивается её значение на 1 .

В другом случае, когда оператор ++ идёт до переменной num, то сначала увеличивается значение этой переменной на 1 , и только потом возвращается её значение.

Оператор — действует аналогично:

Кроме этого имеются комбинированные операторы: += , -= , *= , /= , %= и **= :

Для сравнения чисел в JavaScript используются следующие операторы :

  • равенство с учетом типа: === , с попыткой преобразования: == ;
  • не равенство с учетом типа: !== , с попыткой преобразования: != ;
  • больше: > , больше или равно: >= ;
  • меньше: < , меньше или равно: <= .

При сравнении чисел необходимо учитывать точность:

Способ сравнить число до двух знаков после плавающей точки:

Преобразование строки в число и наоборот

1. Преобразование строки в число

Явно привести строку в число можно разными способами:

1.1. Использовать унарный оператор + , который необходимо расположить перед значением.

Этот способ пренебрегает пробелами в начале и конце строки, а также \n (переводом строки).

При использовании оператора + обратите внимание, что » , ‘ ‘ и ‘\n’ преобразуется в число 0 . Значение null и логические значения приводятся к следующим числам:

1.2. С помощью глобальной функции parseInt() или метода Number.parseInt() . Они предназначены для преобразования значения, переданного им на вход, в целое число . В отличие от использования унарного оператора + , эти методы позволяют преобразовать строку в число, в которой не все символы являются цифровыми . Эти методы преобразовывают строку, начиная с первого символа. И как только встречают символ, не являющийся цифровым, они останавливают дальнейший разбор строки и возвращают полученное число:

Эти функции могут работать с разными системами счисления (двоичной, восьмеричной, десятичной, шестнадцатеричной). Основание системы счисления передаётся в вызов parseInt() или Number.parseInt() в качестве второго аргумента.

Кроме этого рекомендуется всегда указывать основание системы счисления и не полагаться на значение, которое оно имеет в том или ином браузере по умолчанию.

1.3. Для преобразования строки в число с плавающей точкой в JavaScript имеются методы parseFloat() и Number.parseFloat() . Друг от друга они ничем не отличаются, просто последний был добавлен в язык немного позднее:

Метод parseFloat в отличие от parseInt всегда рассматривает строку как число в десятичной системе счисления. Указать ему другую систему счисления нельзя.

2. Преобразование числа в строку.

Превратить число в строку можно с помощью метода toString() .

Дополнительно можно передать систему счисления с учётом которой необходимо явно привести число к строке:

Проверки: isFinite, isNaN, isInteger

Этот метод позволяет проверить, является ли значение конечным числом. В качестве результата isFinite возвращает true , если значение является конечным числом. В противном случае false :

Кроме Number.isFinite в JavaScript имеется также глобальная функция isFinite . Она в отличие от Number.isFinite выполняет проверку с учетом принудительное приведение переданного ей аргумента к числу:

Этот метод объекта Number предназначена для определения того, является ли значение NaN . Если это так, то isNaN возвращает true . В противном случае – true :

Кроме Number.isNaN имеется также глобальный метод isNaN , он выполняет проверку с учетом приведения указанного типа данных к числу:

3. Как проверить, является ли значение числом?

В JavaScript имеется метод, который позволяет определить, является ли значение целым числом. Называется он isInteger :

В этом примере для ’20’ мы получили false , т.к. данное значение является строкой.

Если вам нужно проверить является ли значение числом, при это не важно целям или с плавающей точкой, то можно написать, например, вот такую функцию:

Эта функция в зависимости от результата возвращает true или false .

После этого её можно использовать для проверки следующим образом:

Если нужно проверить строковое значение, то его предварительно нужно преобразовать в строку, например, с помощью метода parseFloat :

При проверке строки ’20px’ мы получили true , потому что метод parseFloat(’20px’) возвращает нам число 20 .

Округление

Округление чисел в JavaScript можно выполнить разными способами.

1. С помощью специальных, предназначенных для этой задачи, методов:

  • Math.floor – до ближайшего целого в меньшую сторону;
  • Math.ceil – до ближайшего целого в большую сторону;
  • Math.round – в большую сторону, если дробная часть >= 0.5; иначе в меньшую сторону;
  • Math.trunc – путём отбрасывания дробной части;

2. Посредством toFixed() .

Этот метод округляет дробную часть числа до заданной точности, но результат возвращает в виде строки:

3. Через toPrecision() .

Данный метод возвращает число в строковом формате, округленное с указанной точностью. При этом он может округлить целую и дробную часть числа. При этом значение может быть представлено как с плавающей точкой, так и в экспоненциальной форме:

4. С использованием логического оператора

Форматирование чисел

В JavaScript вывести число в соответствии с региональными стандартами (языковыми настройками операционной системы) позволяет метод toLocaleString() .

В соответствии с настройками установленными в системе:

Явно указав регион:

Для отображения денежных величин:

В процентном формате:

С разделением групп разрядов (свойство useGrouping ):

С указанием числа десятичных знаков:

Примеры

1. Пример, в котором напишем две функции для проверки числа соответственно на четность и не четность . А затем используем их в коде:

2. Пример на JavaScript в котором получим простые числа от 2 до 100:

3. Пример, в котором вычислим целую и дробную часть числа :

В этом примере, получение целой части числа выполняется посредством Math.floor() , а дробной части с помощью получения остатка от деления на 1 или вычитания числа от его целой части.

4. Пример, в котором определим, делится ли число нацело , используя оператор % :

Суммировать все цифры числа Javascript

Я хочу сделать небольшое приложение, которое будет вычислять сумму всех цифр числа.

Например, если у меня есть число 2568, приложение рассчитает 2+5+6+8, что равно 21. Наконец, оно рассчитает сумму цифр 21, и окончательный результат будет 3 .

В основном у вас есть два метода, чтобы получить сумму всех частей целого числа.

С числовыми операциями

Возьмите число, постройте остаток от десяти и прибавьте его. Затем возьмите целую часть от деления числа на 10. Продолжайте.

Используйте строковые операции

Преобразуйте число в строку, разделите строку и получите массив со всеми цифрами, выполните сокращение для каждой части и верните сумму.

Для возврата значения вам необходимо адресовать value свойство.

Как насчет этого простого подхода с использованием арифметики по модулю 9?

давайте попробуем рекурсивность

Сумма цифр может быть рассчитана с помощью этой функции (на основе других ответов):

Если вам действительно нужно рекурсивно суммировать цифры, существует рекурсивная версия функции:

Выражение sumDigitsRecursively(2568) будет равно 3 . Потому что 2+5+6+8 = 21 и 2+1 = 3 .

Обратите внимание, что рекурсивное решение @FedericoAntonucci должно быть более эффективным, но оно не дает вам промежуточной суммы цифр, если вам это нужно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *