Получение части от числа

muzfan
Offline
Зарегистрирован: 26.02.2016
Товарищи, помогите, пожалуйста.
Ниже код, с помощью которого хочу получить часть от целого, значение которой кладётся в переменную _tm, но по непонятным мне причинам, в _tm всегда уходит 0. Как с этим справиться?
 
int time = 90;
byte cycle = 1;

void Cycle(){
  
  int tm = time;
  int _tm = 0;
  while (cycle <= 3){
    switch(cycle){
      case 1:
        Serial.println(tm);
        _tm = round(tm / 100 * 20);
        Serial.println(_tm);
        cycle++; 
        _tm = 0;
        delay(10000);
      break;

      case 2:
       Serial.println(tm);
       _tm = round(tm / 100  * 50);
       Serial.println(_tm);
       cycle++; 
       _tm = 0;
       delay(10000);
      break;

      case 3:
        Serial.println(tm);
        _tm = round(tm / 100  * 30);
        Serial.println(_tm);
        cycle++;
      break; 
    }
  }
  cycle = 1;
}

void setup() {
   Serial.begin(9600);
}

void loop() {
  Cycle();
}

 

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

tm - целое. tm равно сначала 90. tm / 100 = 0; Чтобы получить что-то нужно double(tm)/100.

Возможно можно обойтись без float, но это надо знать смысл такого преобразования.

 

muzfan
Offline
Зарегистрирован: 26.02.2016

Спасибо!

Все заработало

Datak
Offline
Зарегистрирован: 09.10.2014
//_tm = round(tm / 100 * 20);

_tm = ( tm * 20 ) / 100;

Только не забывайте следить, чтобы не было переполнения при умножении.