Большое число

ace
Offline
Зарегистрирован: 17.05.2012

Никогда при написании скетчей  не использовал большие числа.

Сегодня вычисляя средне квадратичное значение с аналогового входа

столкнулся с непонятным для меня случаем.

При возведении в квадрат у меня получаются разные числа

взависимости от типа переменной.

unsigned long x=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
x=sq(analogRead(0));
Serial.println(x);
}

Подставлял все варианты переменной - получал разные значения - но все не правильные.

Попробывал так:

unsigned long x=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
x=sq(500*500);
Serial.println(x);
}

То-же самое

В чем проблема?

maksim
Offline
Зарегистрирован: 12.02.2012
ace
Offline
Зарегистрирован: 17.05.2012

Спасибо!

Завтра проверю.

ace
Offline
Зарегистрирован: 17.05.2012

В ссылке все понятно а как быть когда нужно

выполнить действия с переменными и дополнить L, U, UL . Компилятор ругается.

Например

for (x=200; x=500; x+10)

{

z=z+(sq(x));

}

Serial.println (z);

leshak
Offline
Зарегистрирован: 29.09.2011

Вставка программного кода в тему/комментарий

Как ругается, что ругается - неведомо. Взять ваш код и у себя посмотреть - нельзя так как это огрызок кода.

for (x=200; x=500; x=10)

бесконечный цикл. никогда не закончится (всматривайтесь в третий параметр). UPD: вернее пройдет один раз, но проблема там же, UPD2: после того как вы изменили ;x=10) на ;x+10) - первый апдейт потерял смысл. Теперь это точно бесконечный цикл.  UPD3: хотя нет. в любом случае бесконечный. x=500 - тоже проблема. Читайте for , плюс == (и вообще весь раздел "операторы сравнение"), ++ и += (а лучше весь раздел "унарные операторы"), а также = (assignment) . Да, похорошему со всем разделом Программирование нужно ознакомится. Это и сеть "базовый минимум" обязательный к прочтению.

Почитайте в доке какое максимальное число влазит unsigned long, прикинте не выходит-ли сумма за эти границы (лень сейчас самому считать).

А помочь вам в этих прикидках поможет школьный учебник математики. Например вот:Математика - это просто! 9 - 11 классы. Формулы суммы первой степени, квадратов, кубов первых n натуральных чисел

После этого вы возможно поймете что и sq и цикл с суммой вам не нужен. Все сводится к умножению и делению.

Заодно будете знать ответ на вопрос "зачем программисту математика" ;)

 

leshak
Offline
Зарегистрирован: 29.09.2011

см. UPD3 прошлого поста.