Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 检查两个数字是否接近_C - Fatal编程技术网

C 检查两个数字是否接近

C 检查两个数字是否接近,c,C,我想检查两个数字是否在给定值的范围内 boolean withinRange(double input1, double input2, double deviation){ //input1 will always be the biggest value if(input1 > input2){ //do nothing } else if(input1 < input2) { double temp = input1; input1 = inp

我想检查两个数字是否在给定值的范围内

boolean withinRange(double input1, double input2, double deviation){

//input1 will always be the biggest value
  if(input1 > input2){
    //do nothing
  } else if(input1 < input2) {
    double temp = input1;
    input1 = input2;
    input2 = temp;
  } else if(input1 == input2){
    return true;
  }

  if(input2 + deviation < input1 - deviation < input2){
    return true;
  } else {
    return false;
  }
}
范围内的布尔值(双输入1、双输入2、双偏差){
//输入1将始终是最大的值
如果(输入1>输入2){
//无所事事
}否则如果(输入1<输入2){
双温度=输入1;
输入1=输入2;
输入2=温度;
}else if(input1==input2){
返回true;
}
if(输入2+偏差<输入1-偏差<输入2){
返回true;
}否则{
返回false;
}
}

所以像withinRange(2,3,2)这样的输入应该是true,但是withinRange(1,4,2)应该是false。我知道代码是错误的,但我不知道如何解决它。它是用Arduino编码的,因此与C非常相似。

这通常是这样做的,非常简单:

bool withinRange(double input1, double input2, double deviation)
{
  return fabs(input1 - input2) <= deviation;
}
bool within范围(双输入1、双输入2、双偏差)
{

return fabs(input1-input2)通常是这样做的,非常简单:

bool withinRange(double input1, double input2, double deviation)
{
  return fabs(input1 - input2) <= deviation;
}
bool within范围(双输入1、双输入2、双偏差)
{
返回fabs(input1-input2)
double out=num1-num2;
如果(out<0)out*=-1;
如果(out
double out=num1-num2;
如果(out<0)out*=-1;

如果(out这不符合您的想法:

if(input2 + deviation < input1 - deviation < input2){
首先检查
(input2+偏差)<(input1-偏差)
是否为真。然后将此比较的结果(0或1)与
input2
进行比较

编写上述表达式的正确方法是:

if (((input2 + deviation) < (input1 - deviation)) && ((input1 - deviation) < input2)) {

请注意,
的用法与您认为的不同:

if(input2 + deviation < input1 - deviation < input2){
首先检查
(input2+偏差)<(input1-偏差)
是否为真。然后将此比较的结果(0或1)与
input2
进行比较

编写上述表达式的正确方法是:

if (((input2 + deviation) < (input1 - deviation)) && ((input1 - deviation) < input2)) {

注意使用
您只需检查一个数字是否在另一个数字+/-范围内:

boolean withinRange(double input1, double input2, double deviation)
{
    return (input1 - deviation <= input2 && input2 <= input1 + deviation);
}
范围内的布尔值(双输入1、双输入2、双偏差)
{

返回(输入1-偏差您只需检查一个数字是否在另一个数字+/-范围内:

boolean withinRange(double input1, double input2, double deviation)
{
    return (input1 - deviation <= input2 && input2 <= input1 + deviation);
}
范围内的布尔值(双输入1、双输入2、双偏差)
{

返回(input1-偏差什么是
afvigelse
计算
input1
input2
(考虑符号)的差异,并将其与
偏差进行比较(即它应该是
@KamiKaze它的“偏差”)用丹麦语。对不起,我将修正翻译什么是
afvigelse
计算
input1
input2
(考虑符号)的差异,并将其与
偏差
(即它应该是
@KamiKaze它的“偏差”)丹麦语。抱歉,我将修复翻译。嗯,当我测试您建议的最后一行代码时,我得到了错误的结果。withinRange(3,5,1)给出了false,它应该是false。withinRange(5,3,2)给出了false,但应该是true。我保留了使input1大于input2的代码,并用您的:if替换了比较代码((input1-input2)afvigelse
的精确差异可以接受,请将条件从
更改为Ahh,我明白了。谢谢你的帮助,嗯,当我测试你建议的最后一行代码时,我得到了错误的结果。withinRange(3,5,1)给出false,它应该是false。withinRange(5,3,2)提供false,但应为true。我保留了使input1大于input2的代码,并用您的:if((input1-input2)afvigelse
的确切差异可以接受,请将条件从
更改为ah。谢谢您的帮助