-->
当前位置:首页 > 题库 > 正文内容

函数题:实数零的校正

Luz2年前 (2022-11-09)题库679
计算机中的实数零存在符号问题:有“正零”和“负零”之分,需要统一校正为“正零”。此外,计算结果本应为零,但却因误差造成结果为绝对值非常小的非零值。因此,有必要设定一个误差阈值 \varepsilon,凡绝对值小于 \varepsilon 的实数一律按零处理。

请编写函数,对实数零进行校正。

#### 函数原型

c
double Revise(double x);


说明:参数 x 是任意实数。若 x 的绝对值小于 $$\varepsilon$$,则函数值为 0.0;否则函数值与 x 相同。

暂且将误差阈值设为 $$\varepsilon = 10^{-8}$$。若实数的绝对值小于 $$\varepsilon$$,则将其修正为零,否则实数值不变。

#### 裁判程序

c
#include <stdio.h>
#include <math.h>

#define epsilon 1e-8

double Revise(double x);

int main()
{
double a, b;
scanf("%lg", &a);
b = Revise(a);
printf("%.15g\n", b);
return 0;
}

/* 你提交的代码将被嵌在这里 */


注:epsilon 为误差阈值。

#### 输入样例
in
-0


#### 输出样例
out
0



其它测试样例

<table>
<tr>
<td align="center">输入样例</td>
<td align="center">输出样例</td>
</tr>
<tr>
<td>1000</td>
<td>1000</td>
</tr>
<tr>
<td>-1000</td>
<td>-1000</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>-1</td>
<td>-1</td>
</tr>
<tr>
<td>0.0001</td>
<td>0.0001</td>
</tr>
<tr>
<td>-0.0001</td>
<td>-0.0001</td>
</tr>
<tr>
<td>0.000000000001</td>
<td>0</td>
</tr>
<tr>
<td>-0.000000000001</td>
<td>0</td>
</tr>
</table>

注:显然不同领域里的实数绝对值相差很大,误差阈值也因此各不相同的。在此我们只从学习的角度简单地使用统一的误差阈值。

---

相关习题:判断相等、不等、大于、小于、大于等于、小于等于;交换;舍入、截断等。







答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。