Технический форум по робототехнике.
к561ЛА7 » 04 апр 2012, 21:44
на экране нужно получить что то типа 5,56 или 0,12 - три разряда и запятую
я пишу так в си++
a=1/b*1000 , где b - insined int (до 65535)
a - определяю как float
а vblab делить не хочет
dccharacter » 04 апр 2012, 22:00
Опять люди синус с косинусом путают
не inSINed, а inCOSined
TomaT » 05 апр 2012, 08:52
Ищите порядок приведения типов, видимо сначала выполняется деление с целым результатом, а потом только приводится к плавучке.
И потом, что нельзя сделать так: a=1000/b, а запятую поставить ручками? И не связываться с плавучкой?
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)));
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