BUG Float???

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Собственно вопрос вот:
 

unsigned long f = 43413500;

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

void loop() {
float newf = f/100000;
Serial.print(" FREQ = ");
Serial.println(newf);
delay(100);
newf = f/1000;
newf = newf/100;
Serial.print(" FREQ_NEW = ");
Serial.println(newf);
delay(3000);
}

И вывод в порт:
 


 FREQ = 434.00
 FREQ_NEW = 434.13
 

 

rkit
Offline
Зарегистрирован: 23.11.2016

Целочисленное деление в 8 строчке.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

И в 12-ой тоже.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

И в 12-ой тоже.

Посыпаю голову пеплом, исправил )))

 

unsigned long f = 43413500;

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

void loop() {
float newf = (float)f/100000;
Serial.print(" FREQ = ");
Serial.println(newf);
delay(100);
newf = (float)f/1000;
newf = newf/100;
Serial.print(" FREQ_NEW = ");
Serial.println(newf);
delay(3000);
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

тему можно удалить, или кусочек добавить в песочницу (ТИПИЧНЫЕ ОШИБКИ)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Зачем так-то?

ua6em пишет:

float newf = (float)f/100000;

Это не лучшая запись. Почему не написать просто

ua6em пишет:

float newf = f / 100000.0;

 
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

Зачем так-то?

ua6em пишет:

float newf = (float)f/100000;

Это не лучшая запись. Почему не написать просто

ua6em пишет:

float newf = f / 100000.0;

а ведь читал жеж )))