![](/img/trans.png)
[英]invalid operands of types `double' and `int' to binary `operator%'
[英]invalid operands of types 'double' and 'int' to binary 'operator%'
那里 !
在我的一个项目中,我正在尝试使用 Arduino Mega2560 和给定代码在七段显示器上打印浮点值,但是我正在使用十进制值获得正确的数据,但是现在当我尝试打印浮点值时,不幸的是得到了上面提到的错误标题。
我正在尝试编译的浮点值代码
switch (current_digit)
{
case 1:
disp(fmodf (adc_value, 10000000)); //8
digitalWrite(digit_7, HIGH);
break;
case 2:
disp(fmodf (adc_value, 1000000)% 10); //7
digitalWrite(digit_6, HIGH);
break;
case 3:
disp(fmodf (adc_value, 100000)% 10); //6
digitalWrite(digit_5, HIGH);
break;
case 4:
disp(fmodf (adc_value, 10000)% 10); //5
digitalWrite(digit_4, HIGH);
break;
case 5:
disp(fmodf (adc_value, 1000)% 10); //4
digitalWrite(digit_3, HIGH);
digitalWrite(SegGDP,LOW);
break;
case 6:
disp( fmodf (adc_value, 100) % 10); //3
digitalWrite(digit_2, HIGH);
break;
case 7:
disp( fmodf (adc_value, 10) % 10); //2
digitalWrite(digit_1, HIGH);
break;
case 8:
disp(fmodf (adc_value, 10)); //1
digitalWrite(digit_0, HIGH);
}
参考:
fmodf
返回一个浮点数。 所以
fmodf(adc_value, 1000000)% 10
仍将尝试float % int
。
但是,该代码可能不是您想要的。 相当于
(adc_value / 1000000) % 10
应该
fmodf(adc_value / 1000000.f, 10.f)
case 1:
disp(fmodf (adc_value, 10000000)); //8
您想要floor(adc_value / 10000000)
代替,这将是 integer 除法adc_value / 10000000
的浮点等价物。
case 2:
disp(fmodf (adc_value, 1000000)% 10); //7
浮点值和 integer 之间没有%
,所以这里是你想要fmodf
的地方,就像fmodf ( floor(adc_value / 1000000), 10)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.