|
Тип данных в Кейле |
|
|
|
Jun 10 2011, 05:18
|
Группа: Новичок
Сообщений: 5
Регистрация: 10-06-11
Пользователь №: 65 608

|
подскажите начинающему, к какому типу данных правильно отнести число 900 . Дело в том что кейл одинаково отрабатывает и "uint" и "uchar" с подобным числом и в железе все работает правильно, хотя , если я не ошибаюсь, это двухбайтовая величина и должна быть типа "short"
|
|
|
|
|
 |
Ответов
|
Jun 10 2011, 06:46
|
Группа: Новичок
Сообщений: 5
Регистрация: 10-06-11
Пользователь №: 65 608

|
дополнение к вопросу. фрагмент кода:
tval=tval*(0.625);// return(tval);
после этой операции tval может принимать значение от 000 до 1200, далее идет сравнение с переменной содержащей число из этого диапазона.
извиняюсь, ошибка. Правильно от 0000 до 1200.
|
|
|
|
|
Jun 10 2011, 07:11
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Desntal @ Jun 10 2011, 10:46)  после этой операции tval может принимать значение от 000 до 1200 Вы хотите правильно объявить переменную tval? А, какой диапазон значений этой переменной до этой операции? От 0 до 1920? Тогда - unsigned int... Применять операции с плавающей точкой в МК - очень расточительно. Достаточно привести 0.625 к виду 5/8 (деление на 8 целого = сдвиг вправо на 3), тогда Код tval= (5 * tval) >> 3;
|
|
|
|
|
Jun 29 2011, 19:49
|

Местный
  
Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744

|
Цитата(Палыч @ Jun 10 2011, 10:11)  Вы хотите правильно объявить переменную tval? А, какой диапазон значений этой переменной до этой операции? От 0 до 1920? Тогда - unsigned int... В корне неверно. Если unsigned int умножать на 0,625, то в результате всегда будет 0 Потому как (int)0,625 будет 0 Если нужно получать не 0, то нужно использовать float (или double, если нужно, и если оно поддерживается) Цитата(Палыч @ Jun 10 2011, 10:11)  Применять операции с плавающей точкой в МК - очень расточительно. Достаточно привести 0.625 к виду 5/8 (деление на 8 целого = сдвиг вправо на 3), тогда Код tval= (5 * tval) >> 3; Это правильно, без особой необходимости лучше плавучку на МК не использовать, здесь вам не тут, это не х86 с сопроцессором, однако. Тем более когда речь идёт об умножении на константу
|
|
|
|
|
Jun 30 2011, 08:59
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(koyodza @ Jun 29 2011, 23:49)  В корне неверно. Если unsigned int умножать на 0,625, то в результате всегда будет 0 Потому как (int)0,625 будет 0 Вот те - раз... В выражении tval=tval*0.625 , где tval целого типа, константа 0.625 - вещественная; значение tval приводится к вещественному типу; производится умножение двух вещественных; результат приводится к целому; присваивается tval...
|
|
|
|
Сообщений в этой теме
Desntal Тип данных в Кейле Jun 10 2011, 05:18 scifi Вы что-то другое хотели спросить, потому что этот ... Jun 10 2011, 05:48 Desntal поясню вопрос: с термометра ds18b20 считываются дв... Jun 10 2011, 06:10 Палыч Цитата(Desntal @ Jun 10 2011, 10:10) како... Jun 10 2011, 06:28    koyodza Цитата(Палыч @ Jun 30 2011, 11:59) Вот те... Jul 11 2011, 20:51     Палыч Цитата(koyodza @ Jul 12 2011, 00:51) В лю... Jul 12 2011, 05:42      demiurg_spb К слову. Все современные компиляторы самостоятельн... Jul 12 2011, 07:02       Палыч Цитата(demiurg_spb @ Jul 12 2011, 11:02) ... Jul 12 2011, 08:48        scifi Цитата(Палыч @ Jul 12 2011, 12:48) Наскол... Jul 12 2011, 09:22         Палыч Цитата(scifi @ Jul 12 2011, 13:22) нафиг ... Jul 12 2011, 09:43          demiurg_spb Я думаю что Вы оба правы. Когда можно упростить вы... Jul 12 2011, 09:50           GetSmart Цитата(demiurg_spb @ Jul 12 2011, 14:50) ... Jul 12 2011, 09:56            demiurg_spb Цитата(GetSmart @ Jul 12 2011, 13:56) Док... Jul 12 2011, 10:03             GetSmart Цитата(demiurg_spb @ Jul 12 2011, 15:03) ... Jul 12 2011, 10:18          scifi Цитата(Палыч @ Jul 12 2011, 13:43) А, вот... Jul 12 2011, 09:55        demiurg_spb Проверил живьём на максимальном уровне оптимизации... Jul 12 2011, 09:33 scifi По-моему, этот топик просится, чтобы его перенесли... Jun 10 2011, 07:49 Desntal да, объяснить на пальцах трудно. может так понятне... Jun 10 2011, 10:55 Палыч Цитата(Desntal @ Jun 10 2011, 14:55) для ... Jun 10 2011, 11:13 Desntal Палыч, спасибо, просмотрел файл, теперь все ясно м... Jun 10 2011, 11:20 Палыч А, к моему совету (см. пост #6) по поводу исключен... Jun 10 2011, 11:32 scifi Цитата(GetSmart @ Jul 12 2011, 14:18) То ... Jul 12 2011, 10:27 Палыч Цитата(scifi @ Jul 12 2011, 13:55) Ну, ес... Jul 12 2011, 10:49 GetSmart Цитата(Палыч @ Jul 12 2011, 15:49) Нет вр... Jul 12 2011, 10:59  Палыч Цитата(GetSmart @ Jul 12 2011, 14:59) иск... Jul 12 2011, 13:04 scifi Цитата(Палыч @ Jul 12 2011, 14:49) Нет, з... Jul 12 2011, 11:19
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|