modf
函数,它是C标准库中的一个函数,定义在 math.h
头文件中,用于分离浮点数的整数部分和小数部分
用法:
double modf(double value, double *iptr);
这个函数接受两个参数:
value
:要被分解的浮点数。iptr
:一个指向double
类型变量的指针,用于存储value
的整数部分。
modf
函数的工作原理是将 value
分解为一个整数部分和一个分数部分(小数部分)。
整数部分通过 iptr
指针参数返回,而函数本身返回分数部分。
举荔枝~
#include <stdio.h>
#include <math.h>
int main()
{
double value = 123.456; //要分离的数
double intPart; //用于存储 value 的整数部分 <需要确保 intPart 是一个 double 类型的变量>
//modf 函数返回的是 小数 部分
double fracPart = modf(value, &intPart);
//第一个参数是您想要分离的数值~
//第二个参数是一个指向 double 类型变量的指针,用于存储整数部分~
printf("The integer part is: %f\n", intPart); //整数部分
printf("The fractional part is: %f\n", fracPart); //小数部分
return 0;
}
题目描述
2013年起,火车票退票费比例下调:票面乘车站开车时间前48小时以上的按票价5%计退票费。同时,车票退票费的计算方法不再四舍五入到元为单位,而是以5角为单位:尾数小于0.25元的舍去、0.25元以上且小于0.75元的计为0.5元、0.75元以上的进为1元。编写一个函数,计算退票费,假定退票时间举例开车时间在48小时以上。函数原型如下:
double CancelFee(double price);
输入描述
输入一个实数,表示火车票票面价格。
输出描述
输出一个实数,表示退票费。
样例输入
106样例输出
5.5
C语言中的 %
运算符只能用于整数类型,不能直接用于 double
类型。
为了处理 double
类型的小数部分,我们可以使用 modf
函数,它是C标准库中的一个函数,用于分离浮点数的整数部分和小数部分.
#include <stdio.h>
#include <math.h> // 引入math.h库,用于modf函数
double CancelFee(double price)
{
// 计算退票费的初始值,即票价的5%
double fee = price * 0.05;
// 使用modf函数分离fee的小数部分
double intPart;
double decimalPart = modf(fee, &intPart);
// 根据小数部分进行四舍五入
if (decimalPart < 0.25)
{
// 尾数小于0.25元的舍去
fee = intPart;
}
else if (decimalPart < 0.75)
{
// 0.25元以上且小于0.75元的计为0.5元
fee = intPart + 0.5;
}
else
{
// 0.75元以上的进为1元
fee = intPart + 1;
}
// 将fee乘以2再除以2,确保以5角为单位
fee = fee * 2 / 2;
return fee;
}
int main()
{
double price;
scanf("%lf",&price);
printf("%.1lf\n",CancelFee(price));
return 0;
}