计算传感器读数中的位数(Arduino)

时间:2017-05-21 16:49:56

标签: arduino

我正在创建arduino项目,它检查温度并将数据发送到Xively protal。我找到了一些例子,但我不明白传感器读取方法中的位数。有谁可以向我解释一下?特别是有股息的部分/ 10?

方法是:

//This method calulates the number of digits in the sensor readind
//Since each digit of the ASCII decimal representation is a byte, the number
//of digits equals the numbers of bytes:

int getLength(int someValue)
{
//there's at least one byte:
int digits = 1;
//continually divide the value by ten, adding one to the digit count for
//each time you divide, until you are at 0
int getLength(int someValue) {
int digits = 1; 
int dividend = someValue /10 ;
while (dividend > 0) {
  dividend = dividend /10;
  digits++; 
}
return digits;
}

我真的很感激任何解释

2 个答案:

答案 0 :(得分:1)

不确定。如果我有1234号码,我想知道有多少位数?好吧,我从1开始因为我知道至少有1.然后我除以10,这给了我123.那大于0所以我知道至少还有一个数字。然后我除以10,这给了我12,大于10,所以我知道至少还有一个数字。再次除以10,我得到1.大于0,这又是一个数字。再分十,我得到0.现在我知道我已经计算了1234中的所有数字。

基本上你使用除以10来删除数字的最后一位数。如果这仍然留有一个数字,那么有更多的数字。一遍又一遍地做到这一点,直到你达到0.一旦你到0,你就把它们全部嚼掉了,并且已经算完了。

这只是数学,而不是编程的任何深奥。

答案 1 :(得分:0)

添加到@Delta_G 的答案中,这里是在 C++ 中可视化的解决方案 ⤵︎

int currentNumberOfDigits = 0;
int number = 439348;

while (number != 0) {
 number = number / 10;
 currentNumberOfDigits++;
}

return currentNumberOfDigits; // 6 Digits

这是使用字符串的一个很好的替代方案,因为这样您可以使用更少的 Arduino 存储空间,因为您可以使用其他数据类型而不是字符串!

这里以其他数据类型的大小为例⤵︎

enter image description here