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;
如果(outdouble 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。谢谢您的帮助