7-38 拆分实数的整数与小数部分 分数 15 作者 张泳 单位 浙大城市学院 本题要求实现一个拆分实数的整数与小数部分的简单函数。
时间: 2025-07-05 17:09:59 浏览: 5
### 实现拆分浮点数的整数与小数部分
为了实现这一功能,在 C 语言中可以按照如下方式设计 `splitfloat` 函数:
```c
#include <math.h>
void splitfloat(float x, int *intpart, float *fracpart) {
// 获取整数部分并赋值给指针所指向的位置
*intpart = (int)x;
// 使用 math.h 库中的 modf 函数获取小数部分
double temp_frac;
modf((double)x, &temp_frac);
*fracpart = (float)(x - temp_frac);
// 或者不使用库函数,直接计算小数部分
//*fracpart = x - (float)(*intpart);
}
```
上述代码展示了两种方法来获得小数部分。一种是利用标准库提供的 `modf()` 函数[^3];另一种则是通过简单的减法运算得到。
需要注意的是,当参数传递进来之后,整数部分可以直接转换成 `int` 类型,而小数部分则可以通过原数值减去整数部分的方式得出。这里还提供了对 `modf()` 的调用来处理更复杂的情况,该函数会把输入值分为两部分——一个是整数部分(作为第二个参数返回),另一个是以双精度形式表示的小数部分。
对于裁判测试程序样例来说,完整的源码可能看起来像这样:
```c
#include <stdio.h>
#include <math.h>
void splitfloat(float x, int *intpart, float *fracpart){
*intpart = (int)x;
double temp_int;
modf((double)x, &temp_int);
*fracpart = (float)(x - temp_int);
}
int main(){
float number=123.456;
int integerPart;
float fractionalPart;
splitfloat(number,&integerPart,&fractionalPart);
printf("Integer part is %d\n",integerPart);
printf("Fractional part is %.3f\n",fractionalPart);
return 0;
}
```
这段代码实现了将指定范围内的任意正实数分解为其对应的整数和小数两个组成部分的功能,并打印出了结果。
阅读全文
相关推荐



















