![](/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.