我有一個使用以下算法來從傳感器接收的值(無結合的範圍)轉換爲不同的值(結合區域)的設備驅動器。使用算法將未綁定值轉換爲綁定值?
傳感器的值通常爲0〜200範圍內的,但可以超過它,最大約爲4000(當您使用傳感器一種極端的方式這只是發生)。我基本上需要一個功能,可以做到以下,但沒有巨大的if
,所以它更靈活。
它需要採取的值,步驟(在這種情況下20.0f)和最大輸出(在這種情況下10)。
/* disregard the floating point numbers, I can cast them to int */
if (value <= 20.0f)
return 0;
else if (value <= 40.0f)
return 1;
else if (value <= 60.0f)
return 2;
else if (value <= 80.0f)
return 3;
else if (value <= 100.0f)
return 4;
else if (value <= 120.0f)
return 5;
else if (value <= 140.0f)
return 6;
else if (value <= 160.0f)
return 7;
else if (value <= 180.0f)
return 8;
else if (value <= 190.0f)
return 9;
else if (value >= 200.0f)
return 10;
return 0;
ok了,會發生什麼變化值的範圍在(190.0,200.0)? – ninjalj 2011-06-14 19:35:00