编写一个函数用指针作为参数分别得到双精度实型数据的整数部分和小数部分,C语言编写
时间: 2024-12-15 20:23:28 浏览: 20
在C语言中,由于没有内置的方式来直接获取浮点数的整数部分和小数部分,我们需要手动实现这个功能。这里我们可以借助数学运算和指针的概念来完成。假设有一个double类型的变量`num`,我们可以通过下面的方式来获取其整数部分和小数部分:
```c
#include <stdio.h>
// 函数声明
void getParts(double* num, int* integer, double* decimal);
int main() {
double number = 3.14159;
int integral;
double fractional;
// 获取并打印结果
getParts(&number, &integral, &fractional);
printf("Integer part: %d\n", integral);
printf("Decimal part: %.2f\n", fractional);
return 0;
}
// 实现函数 getParts
void getParts(double* num, int* integer, double* decimal) {
*integer = (int)(*num); // 整数部分,截断浮点数
*decimal = fmod(*num, 1.0); // 小数部分,使用fmod计算余数
// 如果需要保留一位小数,则可以使用以下代码
// 注意这将丢失精度,如果不需要那么原始代码即可
// *decimal *= 10; // 将小数扩大10倍,然后向下取整
// *decimal /= 10; // 再除以10恢复到原来的小数位数
}
```
在这个示例中,`getParts`函数接受一个指向`double`的指针,以及两个`int`和`double`指针,用于返回整数部分和小数部分。注意,`fmod`函数用于计算浮点数的模,即小数部分。
阅读全文