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

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

  • автор:

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

Форумчанин

Регистрация: 16.01.2008

Сообщений: 288

Дробная часть числа

Подскажите, какая фунция в Си выделяет дробную часть числа(типа Frac в Паскале)

Участник клуба

Регистрация: 02.09.2007

Сообщений: 1,193

Смотрите help по modf

Участник клуба

Регистрация: 22.04.2007

Сообщений: 1,329

#include int main()

Регистрация: 18.01.2008

Сообщений: 1,720

Сообщение от Carbon

#include int main()

Нельзя, если x < 0

Участник клуба

Регистрация: 22.04.2007

Сообщений: 1,329

#include int main()

Регистрация: 26.07.2009

Сообщений: 1

Первый вариант был правильнее, не надо fabs.

adminish4e
Посмотреть профиль
Найти ещё сообщения от adminish4e

Форумчанин

Регистрация: 02.02.2010

Сообщений: 305

Нет, флур здесь не катит!
google

#include void main()

Skype: CODERua

Последний раз редактировалось [CODER]; 09.11.2010 в 18:54 .

Форумчанин

Регистрация: 26.09.2010

Сообщений: 570

остаток от деления — (число 1)%(число 2)
отбросить все что после запятой — int ((число 1)/(число 2))

Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Форумчанин

Регистрация: 02.02.2010

Сообщений: 305

что то, я ниче не понял
припустим «число 1» — это то вещественное число от которого нам нужно найти вещественную часть. (на сколько я знаю у вещественных числах нельзя найти остаток от деления!)
что есть — «число 2»?

Skype: CODERua

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

Не могу найти такую функцию в 8-ке,
пока пришло на ум только — округлять(до 2 знаков например), потом преобразовывать в строку, потом взять 2 последних знака, потом опять вернуть в число

Ну ты, блин, даешь. 🙂
А так: ТвоеЧисло — Цел(ТвоеЧисло) = ДробнаяЧасть. Не подходит?

(1) Я не точно выразился 🙂
Я имею ввиду например 23/4= 5,75 целое равно 5 а дробная часть равно 75
так как ты предлагаешь получится 0.75, мне именно 75 нужно получить

(2)и осталось только умножить на 100 😉
23%4 = 3(!) а не 75 😉

(3) 🙂 А если после запятой не 2 знака ? 🙂
В паскале и С++ помню были функции mod и div ? тут есть аналог? или всетаки извратами получать? тут дело принципа, надо правильно код писать

(5) все верно
d=4;
Сообщить(«»+(23%d)+»/»+d);
😉
(4)(5)(7) 23 делим на 4 равно 5,75, только что на калькуляторе посчитал,
хотя не важно :))))
Ааа, в смысле % использовать?
так действительно 3 пишет, как это понимать? 🙂

23%4 равно 3 наверно так как остаток 3/4 вот оно 3 и выдает а мне 75 надо
🙂
(10) это Я и Сам придумать могу как извратится, просто ищу простой и правильный способ, код должен быть оптимизированный

(12) 🙂
И все же

(2) к сожалению, 75 — это не дробная часть числа. это всего лишь 75.
дробная часть 0.75000000000000000000000000000000000000000. и т.д. Поэтому и нет таковой функции — она бы возвращала бесконечное число. Так что без округления до нужного количества знаков тебе не обойтись 🙂

Тебя что копейки интересуют?

(15) сначала да, а потом в принципе этот вопрос заинтересовал,
ну нет так нет, буду округлять, всем спасибо за беседу 🙂

Напиши ты функцию, типа
Функция ПолучитьДробнуюЧасть(Число, ЗнакиПослеЗапятой)
Возврат (Окр(Число, ЗнакиПослеЗапятой) — Цел(Число))*Pow(10,ЗнакиПослеЗапятой);
КонецФункции
все ))

Modf – разделяет число на целую и дробную части

Запись была обновлена

Функция modf() позволяет разделить число типа double на целую и дробную части. Целая часть помещается в iptr, а дробная возвращается. Метод modf имеет реализацию, которая использует Streaming SIMD Extensions 2 (SSE2). C++ допускает вызов перегрузки modf, которая принимает и возвращает параметры типа float или long double. В приложении на языке программирования C функция modf всегда принимает на вход два двойных значения, а возвращает двойное значение.

Синтаксис

#include float modff(float x, float *iptr); double modf(double x, double *iptr); long double modfl(long double x, long double *iptr); //x – число, которое требуется разделить на две части: целую дробную //iptr – указатель на переменную, содержащую целую часть числа x

Прототип

Название Язык
math.h С
cmath С++

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

Метод modf() возвращает целую и дробную части в виде двух элементов, возвращаемое значение которых имеют один и тот же знак. Целая часть x возвращается в виде вещественного числа.

Обработка ошибок

  • Если x равно ±0, возвращается ±0, а ±0 сохраняется в *iptr.
  • Если x равно ±∞, возвращается ±0, а ±∞ сохраняется в *iptr.
  • Если x равно NaN, возвращается NaN, а NaN сохраняется в *iptr.

Возвращаемое значение x является точным, а округление игнорируется.

Переносимость

Функция modf уникальна для DOS.

Пример

#include double func, integer; double number = StrToFloat(Edit1->Text); func = modf(number,&integer); Edit2->Text = integer; Edit3->Text = func;

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 

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

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