roboforum.ru

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

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

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

к561ЛА7 » 04 апр 2012, 21:44

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

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

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

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

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

dccharacter » 04 апр 2012, 22:00

Опять люди синус с косинусом путают
не inSINed, а inCOSined

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

TomaT » 05 апр 2012, 08:52

Ищите порядок приведения типов, видимо сначала выполняется деление с целым результатом, а потом только приводится к плавучке.
И потом, что нельзя сделать так: a=1000/b, а запятую поставить ручками? И не связываться с плавучкой?

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)));

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


Rambler\'s Top100 Mail.ru counter