Hàm modf() tách số thực thành phần nguyên và phần thập phân. Trả về phần thập phân, phần nguyên lưu qua con trỏ. Khai báo trong <math.h>.
Cú pháp
double modf(double x, double *intpart);
Tham số: x – số cần tách; intpart – con trỏ nhận phần nguyên. Trả về phần thập phân (cùng dấu với x).
Ví dụ
#include <stdio.h>
#include <math.h>
int main() {
double val = 28.856;
double intpart, fracpart;
fracpart = modf(val, &intpart);
printf("Phan nguyen: %lf\n", intpart); // 28.000000
printf("Phan thap phan: %lf\n", fracpart); // 0.856000
// Test so am
val = -28.856;
fracpart = modf(val, &intpart);
printf("Am: nguyen=%lf, thap phan=%lf\n", intpart, fracpart);
// -28.000000, -0.856000
return 0;
}
Kết quả
Phan nguyen: 28.000000
Phan thap phan: 0.856000
Am: nguyen=-28.000000, thap phan=-0.856000
Giải thích: modf(28.856, &intpart) lưu 28.0 vào intpart, trả về 0.856. Với số âm, cả hai phần cùng dấu âm.
Hàm liên quan
modff()– float versionmodfl()– long double versionfloor(),ceil(),trunc(),round()– làm trònfrexp()– tách mantissa và exponent (scientific notation)
Lưu ý: Cần link
-lm với gcc. Phần nguyên trả về qua con trỏ kiểu double (không phải integer type).