Как найти дробную часть в си
Перейти к содержимому

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

  • автор:

Как получить дробную часть у числа с плавающей запятой?

что значит извлечь? вы хотите получить только дробную часть?

20 янв 2017 в 14:20

да, только дробную

20 янв 2017 в 14:20

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

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

float money; double fractpart, intpart; money = 8.12; fractpart = modf(money, &intpart); printf("Integral part = %lf\n", intpart); printf("Fraction Part = %lf \n", fractpart); 

Отслеживать

ответ дан 20 янв 2017 в 14:24

Mikhail Vaysman Mikhail Vaysman

14.3k 1 1 золотой знак 21 21 серебряный знак 31 31 бронзовый знак

для отрицательных может работать немного неожиданно. Да и money — (int)money как-то привычнее.

20 янв 2017 в 14:27

что вы имеете в виду под неожиданно?

20 янв 2017 в 14:29

отрицательная дробная часть например. Как бы многие знакомые с математикой предполагают, что дробная часть строго меньше 1 и больше или равна 0.

modf , modff , modfl

Разбивает значение с плавающей запятой на дробную и целую части.

Синтаксис

double modf( double x, double * intptr ); float modff( float x, float * intptr ); long double modfl( long double x, long double * intptr ); 
float modf( float x, float * intptr ); // C++ only long double modf( long double x, long double * intptr ); // C++ only 

Параметры

x
Значение с плавающей запятой.

intptr
Указатель на сохраненное значение целой части числа.

Возвращаемое значение

Эта функция возвращает подписанную дробную часть x . Не возвращается ошибка.

Замечания

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

Функция modf содержит реализацию, которая использует Streaming SIMD Extensions 2 (SSE2). См _set_SSE2_enable . сведения и ограничения на использование реализации SSE2.

C++ допускает перегрузку, поэтому можно вызывать перегрузки modf , которые принимают и возвращают параметры float или long double . В программе на языке C modf всегда принимает два и возвращает одно значение типа double.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью «Глобальное состояние» в CRT.

Требования

Маршрут Обязательный заголовок
modf , modff , modfl C:

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_modf.c #include #include int main( void ) < double x, y, n; x = -14.87654321; /* Divide x into its fractional */ y = modf( x, &n ); /* and integer parts */ printf( "For %f, the fraction is %f and the integer is %.f\n", x, y, n ); >
For -14.876543, the fraction is -0.876543 and the integer is -14 

Как получить дробную часть числа?

cpp

  • C++
  • +1 ещё

Не могу создать новый проект в Atmel Studio 7.0 выдаёт ошибку, что делать?

  • 1 подписчик
  • 6 часов назад
  • 18 просмотров

cpp

  • C++

Почему теряется часть массива символов при его передаче по сокету?

  • 1 подписчик
  • 9 часов назад
  • 48 просмотров

cpp

  • C++

Почему переменная становится равна 1, если после инициализации класса она была равна 3?

  • 1 подписчик
  • 29 апр.
  • 84 просмотра

cpp

  • C++
  • +1 ещё

Вода в unreal engine 4.27 после сборки проекта пропадает. Что делать?

  • 1 подписчик
  • 28 апр.
  • 38 просмотров

cpp

  • C++
  • +1 ещё

Как скомпилировать консольную программу C++ в .app?

  • 1 подписчик
  • 28 апр.
  • 80 просмотров

cpp

  • C++

Как ввести адрес в cin?

  • 1 подписчик
  • 27 апр.
  • 74 просмотра

cpp

  • C++
  • +2 ещё

Почему в сообщении от ESP в телеграм не получается жирный шрифт?

  • 1 подписчик
  • 27 апр.
  • 75 просмотров

cpp

  • C++
  • +3 ещё

Почему Qt5 Не открывает БД Sqlite3?

  • 2 подписчика
  • 26 апр.
  • 457 просмотров

windows

  • Windows
  • +1 ещё

Как вывести изображение с прозрачным фоном WinApi c++?

  • 1 подписчик
  • 26 апр.
  • 111 просмотров

cpp

  • C++
  • +1 ещё

Dbeaver C++ connection error?

  • 1 подписчик
  • 26 апр.
  • 62 просмотра

от 300 000 ₽

от 180 000 ₽

01 мая 2024, в 12:54

2000 руб./в час

01 мая 2024, в 12:46

150000 руб./за проект

01 мая 2024, в 12:23

100000 руб./за проект

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

  • В чём может быть проблема с DNS у иностранного регистратора?
    • 2 подписчика
    • 0 ответов
    • 4 подписчика
    • 0 ответов
    • 3 подписчика
    • 1 ответ
    • 3 подписчика
    • 3 ответа
    • 3 подписчика
    • 1 ответ
    • 2 подписчика
    • 3 ответа
    • 1 подписчик
    • 1 ответ
    • 2 подписчика
    • 3 ответа
    • 2 подписчика
    • 1 ответ
    • 2 подписчика
    • 1 ответ

    как отбросить дробную часть в си. Заколебался уже. Аналог: как выделить целую часть в вещественном числе.

    делаешь преобразование типов. например есть у тебя
    double Pi=3.14;
    ты можешь сделать так:
    int a=(int)Pi; тогда всё,что после . будет отброшенно.

    Похожие вопросы
    Ваш браузер устарел

    Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

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

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