roboforum.ru

Технический форум по робототехнике.

 

как поделить 1 на 50000

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

как поделить 1 на 50000

Сообщение к561ЛА7 » 04 апр 2012, 21:44

на экране нужно получить что то типа 5,56 или 0,12 - три разряда и запятую

я пишу так в си++

a=1/b*1000 , где b - insined int (до 65535)
a - определяю как float

а vblab делить не хочет
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: как поделить 1 на 50000

Сообщение dccharacter » 04 апр 2012, 22:00

Опять люди синус с косинусом путают
не inSINed, а inCOSined
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4881
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: как поделить 1 на 50000

Сообщение TomaT » 05 апр 2012, 08:52

Ищите порядок приведения типов, видимо сначала выполняется деление с целым результатом, а потом только приводится к плавучке.
И потом, что нельзя сделать так: a=1000/b, а запятую поставить ручками? И не связываться с плавучкой?
Аватара пользователя
TomaT
 
Сообщения: 354
Зарегистрирован: 25 июл 2007, 10:38
Откуда: Москва (Троицк, МО)
ФИО: Антон Миронов

Re: как поделить 1 на 50000

Сообщение AndreiSk » 05 апр 2012, 10:32

к561ЛА7 писал(а):на экране нужно получить что то типа 5,56 или 0,12 - три разряда и запятую

я пишу так в си++

a=1/b*1000 , где b - insined int (до 65535)
a - определяю как float

а vblab делить не хочет


Я слышал, что нельзя на ноль делить.
А что vblab говорит, почему не хочет?
Попробуй заменить на
a = ( b == 0 ? 99999999 : (1000.0 / ((float) b)));
Аватара пользователя
AndreiSk
 
Сообщения: 2618
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: как поделить 1 на 50000

Сообщение boez » 05 апр 2012, 10:41

Разумеется сначала выполняется целое деление 1/b (получается 1, если b=1, 0 если b>1 и че-то плохое если b=0), потом этот целый результат множится на 1000 и только потом приводится к float.

Правильно делать так: a=1000.0/b

Это если известно, что b<>0. если 0 возможен - тогда так

a=(b==0)?9999.0:1000.0/b
boez
 
Сообщения: 1974
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Mail.ru counter