我是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中的标准库是否提供了可以完成此任务的功能?如果没有,您如何建议我继续?
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));
}
要创建更多通用(伪)函数,可以使用C编译器附带的宏生成器: