C是否具有可以测试值是否在期望值的公差范围内的函数,如果不是,该如何创建一个?

问题描述 投票:-1回答:2

我是C语言的新手,最近我做了一个有趣的作业,科学数字在摆弄。

分配是要实现将重量单位转换为其他单位,然后将不同的重量单位彼此进行比较的几个功能。

我的代码工作正常,但是由于使用科学数字(例如1e + 6)进行了计算我的比较任务失败。

说我有:A = 1公斤

B = 2.2046226218磅

在比较它们之前,我将A变成了磅。

但是数据丢失并且1千克不等于2.2046226218磅

后面的代码:if(a == b)// =>返回false

但是这不是代码的工作方式。

因此,我的想法是实现以下功能。

类似这样的东西:

bool inToleranceRange( a , b , tolerance_range){ // returns true if a is in + || - tolerance range of b
  //TO DO
}

// later in code

int value = inToleranceRange(a, b, 1);
if( value == 1){
  printf("\na is equal to b");
}

不过,在开始之前,我想问一下C中的标准库是否提供了可以完成此任务的功能?如果没有,您如何建议我继续?

c scientific-notation fault-tolerance
2个回答
0
投票
bool inToleranceRange(double a, double b, double tolerance_range) {
    // returns true if a is in + || - tolerance range of b
    return (fabs(a-b) <= fabs(tolerance_range));
}

0
投票

要创建更多通用(伪)函数,可以使用C编译器附带的宏生成器:

© www.soinside.com 2019 - 2024. All rights reserved.