函数题:截断问题(实用版)
C99 标准函数库中引入了截断函数 trunc,用于对小数作截断处理。作为练习,我们自己编写一个功能更全、更实用的函数。
c
double Trunc(double x, int d);
说明:参数 x 是任意实数,d 为小位位数。函数值为将 x 截断为保留 d 位小数的实数。
#### 裁判程序
c
#include <stdio.h>
#include <math.h>
#define epsilon 1e-8
......
double Trunc(double x, int d);
int main()
{
double x, y;
int d;
scanf("%lg%d", &x, &d);
y = Trunc(x, d);
printf("%.15g\n", y);
return 0;
}
......
/* 你提交的代码将被嵌在这里 */
注:epsilon 为误差阈值。
#### 输入样例1
in
-0.0000326 4
#### 输出样例1
out
0
#### 输入样例2
in
30.2689 2
#### 输出样例2
out
31.26
#### 输入样例3
in
-15374093826.98 0
#### 输出样例3
out
-15374093826
#### 输入样例4
in
927.19999999999993 1
#### 输出样例4
out
927.2
样例说明:实数 165.4 与 761.8 相加,结果本应为 927.2。若保留 1 位小数,则为 927.2。但在计算机上因误差原因机器值为 927.19999999999993,因此要考虑误差因素将结果调整为 927.2。
提示:需要用到前面练习中的实数零的校正、实数的整数次幂等函数,以及 C 语言标准库中的 floor、ceil 等函数。
---
相关习题:实数零的校正、实数的整数次幂、截断问题(简版、高级版)、舍入问题(简版、高级版、实用版)。
答案:若无答案欢迎评论
c
double Trunc(double x, int d);
说明:参数 x 是任意实数,d 为小位位数。函数值为将 x 截断为保留 d 位小数的实数。
#### 裁判程序
c
#include <stdio.h>
#include <math.h>
#define epsilon 1e-8
......
double Trunc(double x, int d);
int main()
{
double x, y;
int d;
scanf("%lg%d", &x, &d);
y = Trunc(x, d);
printf("%.15g\n", y);
return 0;
}
......
/* 你提交的代码将被嵌在这里 */
注:epsilon 为误差阈值。
#### 输入样例1
in
-0.0000326 4
#### 输出样例1
out
0
#### 输入样例2
in
30.2689 2
#### 输出样例2
out
31.26
#### 输入样例3
in
-15374093826.98 0
#### 输出样例3
out
-15374093826
#### 输入样例4
in
927.19999999999993 1
#### 输出样例4
out
927.2
样例说明:实数 165.4 与 761.8 相加,结果本应为 927.2。若保留 1 位小数,则为 927.2。但在计算机上因误差原因机器值为 927.19999999999993,因此要考虑误差因素将结果调整为 927.2。
提示:需要用到前面练习中的实数零的校正、实数的整数次幂等函数,以及 C 语言标准库中的 floor、ceil 等函数。
---
相关习题:实数零的校正、实数的整数次幂、截断问题(简版、高级版)、舍入问题(简版、高级版、实用版)。
答案:若无答案欢迎评论