for循环中pow函数的错误值

时间:2014-12-02 21:11:16

标签: c arduino

我试图在Arduino上制作一个IP计算器,但在这部分我得到了错误的结果,我期待128,但它返回127,我认为问题在于pow功能(2,i)因为如果我用(2,7)硬编码pow我得到128.这是代码

result=0;
binNumber="10110100"; //I this bin number in another function
firstchar= binNumber.substring(0, 1); //extract the first char
c0="0000000"; 
fullNumber= firstchar + c0;
for(int i=0;i<=7;i++){
  x = String (fullNumber[7-i]);
  xint= x.toInt();
  result= result + xint * pow(2,i);
}
lcd.print(result);

1 个答案:

答案 0 :(得分:1)

不要使用pow(2,i)。使用1<<i。通过使用位移,可以避免可能的浮点错误。