Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm modf() trong C/C++

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 version
  • modfl() – long double version
  • floor(), ceil(), trunc(), round() – làm tròn
  • frexp() – 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).