Ajuda com calculo (RESOLVIDO) - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T12:22:09Zhttps://labdegaragem.com/forum/topics/ajuda-com-calculo?commentId=6223006%3AComment%3A726893&xg_source=activity&feed=yes&xn_auth=noSe multiplicar por 100000 e d…tag:labdegaragem.com,2020-02-13:6223006:Comment:7270402020-02-13T15:48:56.744ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>Se multiplicar por 100000 e depois dividir por 10 dá certo.</p>
<p>Vai entender.</p>
<p>Se multiplicar por 100000 e depois dividir por 10 dá certo.</p>
<p>Vai entender.</p> float dá o mesmo erro.
Incrív…tag:labdegaragem.com,2020-02-13:6223006:Comment:7269782020-02-13T15:47:22.258ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>float dá o mesmo erro.</p>
<p>Incrível que somente com 10000 apresenta isso no meu caso.</p>
<p>Se multiplicar por 100000 já multiplica correto.</p>
<p>float dá o mesmo erro.</p>
<p>Incrível que somente com 10000 apresenta isso no meu caso.</p>
<p>Se multiplicar por 100000 já multiplica correto.</p> Colocando assim deu certo.
u…tag:labdegaragem.com,2020-02-13:6223006:Comment:7271402020-02-13T15:41:42.728ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>Colocando assim deu certo.</p>
<p></p>
<p>unsigned long bb = ((unsigned long)12 * (unsigned long)10000);</p>
<p></p>
<p>Obrigado.</p>
<p>Colocando assim deu certo.</p>
<p></p>
<p>unsigned long bb = ((unsigned long)12 * (unsigned long)10000);</p>
<p></p>
<p>Obrigado.</p> FUNCIONOU.
unsigned long bb =…tag:labdegaragem.com,2020-02-13:6223006:Comment:7268932020-02-13T15:40:17.803ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>FUNCIONOU.</p>
<p>unsigned long bb = ((unsigned long)12 * (unsigned long)10000);</p>
<p></p>
<p>Obrigado.</p>
<p>FUNCIONOU.</p>
<p>unsigned long bb = ((unsigned long)12 * (unsigned long)10000);</p>
<p></p>
<p>Obrigado.</p> Engraçado que se multiplicar…tag:labdegaragem.com,2020-02-13:6223006:Comment:7270382020-02-13T15:38:51.769ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>Engraçado que se multiplicar por 50000 ou 100000 dá certo.</p>
<p>Só fica errado se multiplicar por 10000 neste caso.</p>
<p>Engraçado que se multiplicar por 50000 ou 100000 dá certo.</p>
<p>Só fica errado se multiplicar por 10000 neste caso.</p> CF, imprime o valor bb também…tag:labdegaragem.com,2020-02-13:6223006:Comment:7268922020-02-13T13:34:40.495Zmineirin RVhttps://labdegaragem.com/profile/RuiViana
<p>CF, imprime o valor bb também em hex.</p>
<p></p>
<p>Olha que estranho:</p>
<p>O valor <strong>4294956224 </strong> em hexa é 0XFF FF D4 C0 e 120000 em hexa é 0X00 01 D4 C0.</p>
<p>parece erro de conversão do compilador.</p>
<p>Ele parece que está considerando a operação com int.</p>
<p>Testa colocando bb como 120000, e não como multiplicação.</p>
<p>RV</p>
<p>CF, imprime o valor bb também em hex.</p>
<p></p>
<p>Olha que estranho:</p>
<p>O valor <strong>4294956224 </strong> em hexa é 0XFF FF D4 C0 e 120000 em hexa é 0X00 01 D4 C0.</p>
<p>parece erro de conversão do compilador.</p>
<p>Ele parece que está considerando a operação com int.</p>
<p>Testa colocando bb como 120000, e não como multiplicação.</p>
<p>RV</p> Novos testes: (ASSIM FICA COM…tag:labdegaragem.com,2020-02-13:6223006:Comment:7269762020-02-13T13:29:35.094ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p><span>Novos testes: (<strong>ASSIM FICA COM ERRO</strong>)</span></p>
<p>void setup()<br></br>{<br></br>Serial.begin(115200);<br></br>}</p>
<p>void loop()<br></br>{<br></br>unsigned long aa = (2023 * 1000000);<br></br>unsigned long bb = (10000 * 12);<br></br>teste = aa + bb;</p>
<p>Serial.println (aa);<br></br>Serial.println (bb);<br></br>Serial.print ("teste: ");<br></br>Serial.println (teste);<br></br>Serial.println ("certo:…</p>
<p><span>Novos testes: (<strong>ASSIM FICA COM ERRO</strong>)</span></p>
<p>void setup()<br/>{<br/>Serial.begin(115200);<br/>}</p>
<p>void loop()<br/>{<br/>unsigned long aa = (2023 * 1000000);<br/>unsigned long bb = (10000 * 12);<br/>teste = aa + bb;</p>
<p>Serial.println (aa);<br/>Serial.println (bb);<br/>Serial.print ("teste: ");<br/>Serial.println (teste);<br/>Serial.println ("certo: 2023120000");<br/>Serial.println();</p>
<p>delay(5000);<br/>}</p>
<p>Resultado:</p>
<p>2023000000<br/><strong>4294956224</strong><br/>teste: <strong>2022988928</strong><br/>certo: 2023120000</p> Novos testes: (ASSIM FICA COR…tag:labdegaragem.com,2020-02-13:6223006:Comment:7271382020-02-13T13:26:54.303ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>Novos testes: (ASSIM FICA CORRETO)</p>
<p>void setup()<br></br>{<br></br>Serial.begin(115200);<br></br>}</p>
<p>void loop()<br></br>{<br></br> unsigned long aa = (2023 * 1000000);<br></br> unsigned long bb = (100000 * 12 / 10);<br></br> teste = aa + bb;</p>
<p>Serial.println (aa);<br></br>Serial.println (bb);<br></br>Serial.print ("teste: ");<br></br>Serial.println (teste);<br></br>Serial.println ("certo: 2023120000");<br></br>Serial.println();</p>
<p>delay(5000);<br></br>}</p>
<p>Resultado:</p>
<p></p>
<p>2023000000<br></br>120000<br></br>teste:…</p>
<p>Novos testes: (ASSIM FICA CORRETO)</p>
<p>void setup()<br/>{<br/>Serial.begin(115200);<br/>}</p>
<p>void loop()<br/>{<br/> unsigned long aa = (2023 * 1000000);<br/> unsigned long bb = (100000 * 12 / 10);<br/> teste = aa + bb;</p>
<p>Serial.println (aa);<br/>Serial.println (bb);<br/>Serial.print ("teste: ");<br/>Serial.println (teste);<br/>Serial.println ("certo: 2023120000");<br/>Serial.println();</p>
<p>delay(5000);<br/>}</p>
<p>Resultado:</p>
<p></p>
<p>2023000000<br/>120000<br/>teste: 2023120000<br/>certo: 2023120000</p> Olá.
Acredito que o compila…tag:labdegaragem.com,2020-02-13:6223006:Comment:7268892020-02-13T13:08:17.410ZEduardohttps://labdegaragem.com/profile/EduardoHenriqueMarcondes
<p>Olá.</p>
<p> Acredito que o compilador esteja se perdendo pq vc está mandando fazer contas com inteiros.</p>
<p> Para que os numeros que entram na conta sejam Long também vc precisa acumular em variáves Long, ex:</p>
<p><span>unsigned long teste = ((2023L * 1000000L) + (12L * 10000L));</span></p>
<p></p>
<p>Ref: <a href="https://www.arduino.cc/reference/pt/language/variables/data-types/long/">https://www.arduino.cc/reference/pt/language/variables/data-types/long/</a></p>
<p></p>
<p> O ESP…</p>
<p>Olá.</p>
<p> Acredito que o compilador esteja se perdendo pq vc está mandando fazer contas com inteiros.</p>
<p> Para que os numeros que entram na conta sejam Long também vc precisa acumular em variáves Long, ex:</p>
<p><span>unsigned long teste = ((2023L * 1000000L) + (12L * 10000L));</span></p>
<p></p>
<p>Ref: <a href="https://www.arduino.cc/reference/pt/language/variables/data-types/long/">https://www.arduino.cc/reference/pt/language/variables/data-types/long/</a></p>
<p></p>
<p> O ESP suporta mais bits, tem um int de 32bits, por isso os intermediários cabem.</p>
<p> Em long não, mas em float já preciei mto usar um 123.0 no lugar de 123 pra forçar o compilador a entender que o intermediário é float e não int.</p>
<p>Ref: <a href="https://github.com/espressif/arduino-esp32/issues/1745">https://github.com/espressif/arduino-esp32/issues/1745</a></p> Mesmo colocando "teste" como…tag:labdegaragem.com,2020-02-13:6223006:Comment:7269752020-02-13T13:03:50.632ZCláudio Fernandeshttps://labdegaragem.com/profile/ClaudioFernandes112
<p>Mesmo colocando "teste" como Variável Global, apresenta o mesmo erro.</p>
<p>Já testei com 3 placas em micros diferente. O mesmo erro acontece.</p>
<p>Uno e Nano.</p>
<p>Mesmo colocando "teste" como Variável Global, apresenta o mesmo erro.</p>
<p>Já testei com 3 placas em micros diferente. O mesmo erro acontece.</p>
<p>Uno e Nano.</p>