Как найти дробную часть в си
Форумчанин
Регистрация: 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