2012-01-27 6 views
0

Возможный дубликат:
Extract decimal part from a floating point number in CПолучить дробную часть двойного

Я хотел бы получить десятичную часть двойной наиболее эффективным способом.

Что-то вроде этого:

double a = 1.5; 
double decimal_part = a -1 ; // decimal_part = 0.5 

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

+0

Как вы хотите иметь дело с отрицательными значениями? –

ответ

5

Использование modf функции:

double integer_part; 
double decimal_part = modf(a, &integer_part); 
+0

Указатель, предоставленный 'modf()', не может быть 'NULL'. – caf

+0

@caf, Хорошо, спасибо. – Vladimir

0
double a = 5.6; 
double f = a - int(a); // int(a) chops off fraction 

вы должны убедиться, что диапазоны являются здравомыслящий го INT не переполнения.

+0

Небезопасно, преобразование int может переполняться. – Mat

+0

тогда 'пол' сделаю. – Anycorn

1

Использование modf функция от math.h для double и modff для float.

#include <math.h> 

double val = 3.14159; 
double integral_part; 
double fractional_part; 

/* 
* integral_part will be 3.0 
* fractional_part will be 0.14159 
*/ 
fractional_part = modf(val, &integral_part); 
Смежные вопросы