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

Напишите программу которая считала бы для него сколько десятичных цифр знаков во вводимом числе

Каким выражением на python можно посчитать количество цифр числа?

Для вычисления количества [десятичных] цифр целого числа можно воспользоваться целой частью десятичного логарифма (правда, результат будет занижен на единицу, но её достаточно будет прибавить):

(Последняя строка есть искомое python-выражение; ещё и print можно выбросить для краткости.)

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

(В только-что приведённом фрагменте мы просто, делением на 10, выбрасываем цифру за цифрой пока ничего не останется.)

Для вещественных же чисел мы можем воспользоваться двумя циклами — первый будет идентичен уже приведённому и будет выполнять подсчёт цифр целой части числа, а второй будет, вместо деления, умножать число на 10, пока оно не станет целым, что позволит подсчитать количество цифр в дробной части числа (да, программка зависнет для периодических дробей):

C / C++ подсчет количества десятичных знаков?

допустим, что ввод от пользователя является десятичным числом, например. 5.2155 (С 4 десятичными цифрами). Его можно хранить свободно (int,двойник) etc.

есть умный (или очень простой) способ узнать, сколько десятичных знаков числа был? (вроде как вопрос, как вы находите, что число четное или нечетное, маскируя последний бит).

11 ответов

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

первое-это sprintf количество в большой буфер с «%.50f» строковый формат, скину потом нули подсчет символов после запятой. Это будет ограничено семья. Или вы можете использовать строку в качестве ввода пользователем (а не sprintf ing значение с плавающей запятой), чтобы избежать плавающей запятой проблемы в целом.

второй-вычесть целочисленную часть, затем итеративно умножить на 10 и снова вычесть целочисленную часть, пока не получите ноль. Это ограничено рамками компьютерного представления чисел с плавающей запятой — на каждом этапе вы можете получить проблемы число, которое не может быть представлено точно (так .2155 может быть .215499999998). Что-то вроде следующего (непроверенного, за исключением моей головы, которая примерно на одном уровне с СОМХБЫЛ-35):

если вы знаете, какие числа вы получите (например, все они будут от 0 до 4 цифр после десятичной точки), вы можете использовать стандартные «трюки» с плавающей запятой, чтобы сделать это правильно. Например, вместо:

Как только число преобразуется из пользовательского представления (строка, OCR-ed gif-файл, что угодно) в число с плавающей запятой, вы не имеете дело с тем же числом обязательно. Поэтому строгий, не очень полезный ответ — «Нет».

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

Если вы не можете сделать это (дело B), затем вам нужно сделать предположение о максимальном количестве десятичных знаков, преобразовать число обратно в строковое представление и округлить его до этого максимального числа, используя тур-даже способ. Например, если пользователь поставляет 1.1, который представляется как 1.099999999999999 (гипотетически), преобразование его обратно в строку дает, угадайте, что, «1.099999999999999». Округление этого числа до, скажем, четырех десятичных знаков дает вам «1.1000». Теперь он вернулся к случае.

начните с дробной части: .2155

многократно умножьте на 10 и выбросьте целочисленную часть числа, пока не получите ноль. Число шагов будет числом десятичных знаков. е.г:

4 шага = 4 десятичных цифр

Что значит «хранится свободно (int»? После хранения в int он имеет нулевые десятичные дроби, ясно. Двойник хранится в двоичной форме, поэтому нет очевидного или простого отношения к» десятичным дробям». Почему бы вам не сохранить входные данные в виде строки, достаточно долго, чтобы сосчитать эти десятичные дроби, прежде чем отправлять их в конечный пункт назначения числовой переменной?

Программа для нахождения количества цифр в числе

Программа принимает число и выводит количество цифр в нем.

Решение задачи

  1. Берем значение целого числа и записываем его в переменную.
  2. Используем цикл while и при помощи оператора целочисленного деления «уничтожаем» каждую цифру числа начиная с последней, а при каждой итерации цикла специально созданную переменную (так называемый счетчик цикла) увеличиваем на единицу. После того как введенное в начале число станет равным 0, цикл прекратит свою работу.
  3. Выводим значение этого счетчика на экран.
  4. Конец.

Исходный код

Ниже дан исходный код для подсчета количества цифр в данном числе. Результаты работы программы также даны ниже.

Объяснение работы программы

  1. Записываем введенное пользователем число в переменную n .
  2. Задаем переменную count и инициируем ее значением 0.
  3. Используем цикл while и при помощи оператора целочисленного деления «уничтожаем» каждую цифру числа начиная с конца.
  4. При каждой итерации цикла переменная count увеличивается на 1.
  5. Как только цифры в числе заканчиваются и число n становится равным 0, цикл прекращает свою работу.
  6. Выводим переменную count на экран.

Результаты работы программы

Примечание переводчика

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

Здесь введенное число принимается как строка и мы просто выводим ее длину.

python logo

Английский для программистов

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

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

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