Обсуждаем контроллеры компании Atmel.
Ответить

ATTINY13 Деление

Сб янв 18, 2020 09:09:57

Почему код float test2 = (512/1024)*10 выдает 0?
Каким образом заставить мк получать 0.xx и умножать это число?
А судя по всему мк при делении выдает 0 и умножает на него, когда необходимо 0,5 * 10

Re: ATTINY13 Деление

Сб янв 18, 2020 09:53:45

Тини13 не умеет аппаратно умножать. :)
https://evileg.com/ru/post/17/
https://cxem.net/mc/book29.php

Re: ATTINY13 Деление

Сб янв 18, 2020 10:35:49

Запишите так
Код:
 float test2 = (512.0/1024)*10

или так
Код:
 float test2 = ((float)512/1024)*10

Все числа являются целыми, компилятор выбирает для них целочисленную арифметику.

Re: ATTINY13 Деление

Сб янв 18, 2020 10:43:18

512/1024=0,5
"/" по умолчанию для целых чисел и даст 0.
8)

Re: ATTINY13 Деление

Сб янв 18, 2020 14:38:49

Операция деления делается последней. Всегда.
10*512/1024=5

Re: ATTINY13 Деление

Сб янв 18, 2020 19:45:06

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

Re: ATTINY13 Деление

Вс янв 19, 2020 03:03:36

Спасибо, ребята.

Re: ATTINY13 Деление

Вс янв 19, 2020 09:47:36

здесь тоже не всегда бывает дружелюбно. всё зависит от вопрошающего ...
Ответить