Modf дробная и целая часть числа


Целая и дробная части числа

Разделы: Математика

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

Оборудование: плакат “Кто смолоду делает и думает сам, тот и становится потом надёжнее, крепче, умнее” (В. Шукшин).
Проектор, магнитная доска, справочник по алгебре.

  1. Организационный момент.
  2. Проверка домашнего задания.
  3. Изучение нового материала.
  4. Решение задач по теме.
  5. Итоги урока.
  6. Домашнее задание.

I. Организационный момент: сообщение темы урока; постановка цели урока; сообщение этапов урока.

II. Проверка домашнего задания.

Ответить на вопросы учащихся по домашнему заданию. Решить задачи, вызвавшие затруднения при выполнении домашней работы.

III. Изучение нового материала.

Во многих задачах алгебры приходится рассматривать наибольшее целое число, не превосходящее данного числа. Такое целое число получило специальное название “целая часть числа”.

Целой частью действительного числа х называется наибольшее целое число, не превосходящее х. Целая часть числа х обозначается символом [x] или Е(х) (от французского Entier “антье” ─ “целый”). Например, [5] = 5, [ π ] = 3,

Из определения следует, что [x] ≤ х, так как целая часть не превосходит х.

С другой стороны, т.к. [x] – наибольшее целое число, удовлетворяющее неравенству, то [x] +1>х. Таким образом, [x] есть целое число, определяющееся неравенствами [x] ≤ х α = υ ─ [x] называют дробной частью числа х и обозначают <х>. Тогда имеем: 0 ≤ <х>0 ≤ α о [x+у] = [x] + [у].

Если 1≤ α т.е. α = 1 + α` , где 0 ≤ α` α` и

Это свойство распространяется на любое конечное число слагаемых:

Умение находить целую часть величины очень важно в приближенных вычислениях. В самом деле, если мы умеем находить целую часть величины х, то, приняв [x] или [x]+1 за приближенное значение величины х, мы сделаем погрешность, величина которой не больше единицы, так как

≤ х – [x] ≥ 0 , а во-вторых, в сумме, стоящей в середине полученного двойного неравенства, все слагаемые, начиная с третьего, равны 0, так что x .

Поскольку х – целое число, то остается проверить значения от 0 до 6. Решениями уравнения оказываются числа 0,4 и 5.

Задача 7. Решить систему уравнение


(Провести проверку с помощью проектора.)

Найти число корней уравнения

Преобразуем, неравенство к виду , откуда получим, что искомое количество целых чисел равно 5. Значит, число корней данного уравнения равно 5.

Задача 9. (Соросовская олимпиада).

а) провести проверку самостоятельных работ с помощью проектора;

б) ответить на вопросы:

  1. “Дайте определение целой и дробной части числа”;
  2. “При решении, каких задач используется целая и дробная часть числа?”;

в) выставление отметок.

VI. Домашнее задание.

Дополнительная задача (по желанию).

Некто измерил длину и ширину прямоугольника. Он умножил целую часть длины на целую часть ширины и получил 48; умножил целую часть длины на дробную часть ширины и получил 3,2; умножил дробную часть длины на целую часть ширины и получил 1,5. Определите площадь прямоугольника.

Вывести дробную часть положительного числа на Питоне

Дано положительное действительное число X. Выведите его дробную часть.

Вот моё решение, но оно неправильное:

4 Answers

from math import *
x = float(input())
print((round((x % 1),9)))

Чтобы разделить число на дробную и целые части, можно math.modf() использовать:

print(x — int(x)) — это более точный вариант, но print(a%1) также сработает

Остаток от деления на единцу, как это ни странно, даст нужный результат:


Подпишись на канал!

Новые видеоуроки, книги и полезные статьи для python программистов!

Как получить целую часть вещественного числа?

Евгений Корначев: Я вижу, что вы старательно каждого об этом спрашиваете.

Напишите свой вариант для вашего примера.

Потом я его прокомментирую.

Евгений Корначев: Тут большинство вопросов такие.

Причём в ответ на ваш комментарий выше:

может быть лучше long использовать.

самый лучший вариант (для моего примера, и для чисел умещающихся в double) уже описан вами — Math.floor(x)

но даже оно не подходит для всех задач

Евгений Корначев: OK, раз своего решения у вас нет с числами произвольной точности, то напишу его я:

Илон Маск рекомендует:  Как в Word копировать таблицу

Для отрицательных чисел он возвращает не то, что принято в математике называть целой частью вещественного числа (просто обрезается то, что стоит после десятичной точки). Если надо по определению, то корректировка для таких случаев оставляется для ТС в качестве тривиального ДЗ.

Mod и остаток — не одно и то же

Приготовьтесь, вас ждёт крайне педантичная статья, которая вполне может спасти вас на собеседовании или сэкономить несколько часов при вылавливании бага в продакшне!

Я сейчас активно работаю над вторым сезоном «Руководства для самозванца» и пишу о шифре RSA для SSH, который, очевидно, является самым загружаемым фрагментом кода в истории IT.

Хочется полностью разобраться в этой истории. Кто придумал этот шифр, как он работает, почему работает и будет ли работать в будущем. Сейчас я раскопал одну чертовски интересную историю. Я не криптоманьяк и вижу, как других буквально засасывает в эту область. Но мне это тоже интересно, потому что повсюду есть маленькие норки, а меня как сороку привлекают блестящие штучки в глубоких норках. Я также очень хорош в метафорах.

В любом случае: на прошлой неделе я узнал что-то странное и хочу поделиться: оказывается, mod и остаток от деления — не одно и то же. Действительно забавно то, что некоторые читатели при этих словах выпрыгивают со своих кресел и орут: «А ведь именно это я всегда пытался сказать вам и всем остальным!»

Позовите ребят из секты «mod не остаток»! Это для вас.

Что такое mod?


Я должен был изучить это, как и в прошлый раз, когда всплыла такая тема. Это одна из тех вещей, которые ты знаешь, но не запоминаешь. Когда вы применяете mod, то делите одно число на другое и берёте остаток. Итак: 5 mod 2 будет 1, потому что 5/2=2 с остатком 1.

Термин mod означает операцию modulo, с модулем 2 в данном случае. Большинство языков программирования используют % для обозначения такой операции: 5 % 2 = 1 .

Вот где мы попадаем в странную серую область.

Математика циферблата

Помню, как учил это в школе, а потом забыл. Существует тип математики, называемый «модульной арифметикой», которая имеет дело с циклическими структурами. Самый простой способ представить это — циферблат с циклом 12. Для математика циферблат — это mod 12 . Если хотите понять, можно ли равномерно разделить 253 часа на дни, то можете применить операцию 253 mod 24 , результатом будет 13, поэтому ответ «нет»! Мы можем ответить «да» только если результат 0.

Другой вопрос, который вы можете задать: «Если я выеду в 6 вечера, сколько времени будет по приезду через 16 часов?». Это будет 6 + 16 mod 12 , то есть 10.

Криптографы любят mod , потому что при использовании с действительно большими числами можно создать нечто, известное как «односторонние функции». Это специальные функции, которые позволяют легко вычислить что-то в одном направлении, но не в обратном.

Если я скажу вам, что 9 является результатом возведения в квадрат, вы можете легко определить, что на входе было 3. Перед вами весь процесс от начала до конца. Если я скажу, что 9 является результатом mod 29 , то будет сложнее понять, что на входе.

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

Впрочем, не будем отклоняться от темы.

Остатки и математика циферблата

Теперь переходим к сути: modulo и простой остаток одинаковы, когда числа положительны, но отличаются в случае отрицательных чисел.

Рассмотрим такую задачу:

Каково значение x ? Делим числа и получаем 7 как остаток от 12. Это верный ответ. Как насчет такого:

Используя обычную математику, мы можем умножить -12 на -1, что даёт 12, и у нас по-прежнему остаётся 7, поэтому наш ответ снова 7.

JavaScript с этим согласен:

C# тоже согласен:

Google согласен с первым утверждением, но не согласен со вторым:

Ruby согласен с Google:

Во имя Дейкстры, что здесь происходит?


Вращение часов назад

Чтобы ответить на вопрос, следует понять разницу между остатком и modulo. Программисты объединяют эти операции, но не должны этого делать, потому что они дают одинаковый результат только в случае, если делитель (в нашем случае 12) положителен. Вы можете легко отправить баги в продакшн, если делитель отрицательный.

Но почему существует разница? Рассмотрим положительный делитель 19 mod 12 на часах:

Илон Маск рекомендует:  Fread читать из файла

Конечный результат 7. Мы это знаем и мы можем доказать математически. Но что насчёт 19 mod -12 ? Здесь нужно использовать другие часы:

Модуль равен -12, и мы не можем игнорировать или изменить его, умножив на -1, поскольку модульная арифметика так не работает. Единственный способ правильно рассчитать результат — переставить метки на часах так, чтобы мы двигались от -12 или вращали часы против часовой стрелки, что даёт тот же результат.

Почему не начать метки с -1, двигаясь к -2, и т.д.? Потому что в таком случае мы будем двигаться назад и постоянно уменьшать результат, пока не достигнем -12, и в этот момент сделаем прыжок +12, а modulo так не работает.

Это известная вещь

Прежде чем назвать меня сумасшедшим и начать гуглить тему: это известный факт. На самом деле MDN (Mozilla Developer Network) даже дошла до того, чтобы назвать % операцией «остатка» (remainder), а не modulo:

Оператор remainder возвращает остаток от деления одного операнда на другой. Он всегда принимает знак делимого.

Вот что Эрик Липперт, один из богов C#, говорит о modulo в C#:

Однако это совсем не то, что оператор % реально делает в C#. Оператор % не является каноническим оператором modulus, это оператор остатка.

А как на вашем языке?

Ну и что?

Могу понять, если вы дочитали досюда, а теперь чешете голову и задаётесь вопросом, стоит ли беспокоиться. Думаю, что стоит по двум причинам:

  1. Я представляю, как этот вопрос займёт меня врасплох на собеседовании.
  2. Я представляю, как этот попадёт в продакшн, а разработчики будут несколько часов выяснять, почему математика не работает.

Это также забавный факт на случай, если рядом появится ваш педантичный друг-программист.

Описание функций C (Си) / C++ — modf

Описание функций C (Си) / C++ — modf

#include
double modf(x,intptr);
double x; значение с плавающей точкой
double *intptr; указатель на хранение целой части

Функция modf разрывает значение с плавающей точкой x на
дробную и целую части. Возвращается знаковая дробная часть x. Це-
лая часть хранится в intptr как значение с плавающей точкой.


Функция modf возвращает знаковую дробную часть x. Возвраща-
емого значения в случае ошибки нет.
См. также frexp, ldexp.

#include
double x,y,n;
x = -14.87654321;
y = modf(x,&n); /* y = -0.87654321, n = -14.0 */

Modf дробная и целая часть числа

1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Целая и дробная части в С++.

Дико извиняюсь за тупой вопрос. Скажите пожалуйста какие есть в С++ функции, чтоб мне получить дробную и целую части числа и в каких заголо вочных файлах они описанны. И где описанна clrscr()? Спасибо.

Re: Целая и дробная части в С++.

чтобы получить дробную часть число должно быть float,всё прописано в stdio.h

Re: Целая и дробная части в С++.

Можно ли подробнее?

Появилась ещё пара вопросов.
есть ли как в pascal’е
div и mod, последнее заменяет «%»,
а вместо div что? и опять таки,
в каких заголовочных файлах описанно.
спасибо.

Re: Целая и дробная части в С++.

Re: Целая и дробная части в С++.

Мне это _срочно_ нужно, поверьте на слово. Надо написать прорамму, но С++ увидел только сегодня вечером, надо написать до утра, весь обложился книжками, читаю, голова уже болит..

Re: Целая и дробная части в С++.

google знает ответ. кроме шуток.

Re: Целая и дробная части в С++.

АА. Вы на до мной издеваетесь верно! %)..
Не могу.. НЕТ!! Времени в обрез!! Помогите, плииизз!!

conio.h — slrscr() тут, нашел, но что-то нет в линуксе такого у меня,
или я не там смотрел?


Re: Целая и дробная части в С++.

Вместо clrscr нужно использовать специальные символы.
Вместо div целочисленное деление («/»).

Re: Целая и дробная части в С++.

На вопрос «linux float integer part» ПЕРВАЯ ЖЕ ССЫЛКА.

Re: Целая и дробная части в С++.

div заменяет сивол /. А твоя функция — это trunc))

Как выделить дробную часть

Если необходимо найти дробную часть любого числа с использованием какого-либо языка программирования, то можно использовать, как минимум, два алгоритма действий. Первый заключается в нахождении разницы между модулем исходного числа и его округленного «вниз» значения. Например, на языке PHP блок кода, осуществляющий такую операцию, может выглядеть так:

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

Илон Маск рекомендует:  Создание архивов GZip

С++ преобразует дробную часть числа в целое число

Мне нужно было преобразовать дробную часть числа в целое число без запятой, например, у меня 3,35. Я хочу получить только 35 частей без нуля или запятой,

Поскольку я использовал функцию modf(), чтобы извлечь дробную часть, но она дает мне 0.35 если есть какой-либо способ сделать это или отфильтровать «0.», я буду очень благодарен, если вы покажете мне, как с меньшим кодом возможно,

Немного эффективнее, чем преобразование в строку и обратно:

ЕСЛИ вам это нужно как строка, довольно простое решение стиля C будет (должно работать для переменной числа десятичных знаков):

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

Что-то вроде этого должно работать:

Вы также можете либо не называть pow тем, что пользователь имеет номер в количестве 10 в первом месте или использует таблицу поиска.

Используя некоторую магию stl, здесь пример кода:

Он может быть улучшен, но довольно прост.

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


Первый шаг — убедиться, что переменная, содержащая 3.35, является двойной, но, вероятно, очевидной.

Затем создайте переменную, которая является только целым числом, и установите ее равным значению double. Он будет содержать только целое число.

Затем вычтите целое число (int) из double. Вы останетесь с дробным/десятичным значением. Оттуда просто умножьте на 100.

Помимо десятичного значения 100th, вам нужно будет немного настроить конфигурацию, но это должно быть довольно просто сделать с помощью оператора if. Если десятичное значение больше 0,99, умножьте 1000 и т.д.

Modf дробная и целая часть числа

Для целых чисел определены операции + , — , * и ** . Операция деления / для целых чисел возвращает вещественное число (значение типа float ). Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.

Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // (она соответствует операции div в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая % (она соответствует операции mod в Паскале). Например:

2. Действительные числа

В этом разделе речь пойдет о действительных числах, имеющих тип float .

Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float :

Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русских текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·10 11 , а масса молекулы воды 2.99·10 -23 .

Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записываются так: сначала пишется мантисса, затем пишется буква e , затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23 . Перед самим числом также может стоять знак минус.

Напомним, что результатом операции деления / всегда является действительное число ( float ), в то время как результатом операции // является целое число ( int ).

Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть int(1.7) == 1 , int(-1.7) == -1 .

3. Библиотека math

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

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

Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх. Соответствующая функция ceil от одного аргумента вызывается, например, так: math.ceil(x) (то есть явно указывается, что из модуля math используется функция ceil ). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:

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

Ниже приведен список основных функций модуля math . Более подробное описание этих функций можно найти на сайте с документацией языка Питон.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL