CRect(int, double) ???
От: altmenn Германия DLR IPA
Дата: 14.05.03 10:31
Оценка:
Привет всем!
Вопрос такой вот

CRect(left,top,right,2.5* bottom);

Надо для поддержания "красивости" графика нормировать прямоугольник дробными коэффициентами...
ТО есть ну ни как не 3 и не 2,а именно 2.5 дает правильную ширину...Так как CRect по докуметации имеет тпи параметров int, то хотелось бы выяснить, как в таком случае бороться с варнингами по преобразованию типов???
СПАСИБО!
Безвыходных ситуаций не бывает!(Правило Кирхгофа)
Re: CRect(int, double) ???
От: Patalog Россия  
Дата: 14.05.03 10:36
Оценка:
Здравствуйте, altmenn, Вы писали:

[]

A>Надо для поддержания "красивости" графика нормировать прямоугольник дробными коэффициентами...

A>ТО есть ну ни как не 3 и не 2,а именно 2.5 дает правильную ширину...

Тогда напиши свой CRect, который умеет с плавающей точкой работать.

A>Так как CRect по докуметации имеет тпи параметров int, то хотелось бы выяснить, как в таком случае бороться с варнингами по преобразованию типов???


Если дело именно в том, чтобы победить warning, то так:
CRect(left, top, right, int(2.5 * bottom));
Почетный кавалер ордена Совка.
Re: CRect(int, double) ???
От: UgN  
Дата: 14.05.03 10:38
Оценка:
Здравствуйте, altmenn, Вы писали:


A>
A>CRect(left,top,right,2.5* bottom);
A>

A>Надо для поддержания "красивости" графика нормировать прямоугольник дробными коэффициентами...
A>ТО есть ну ни как не 3 и не 2,а именно 2.5 дает правильную ширину...Так как CRect по докуметации имеет тпи параметров int, то хотелось бы выяснить, как в таком случае бороться с варнингами по преобразованию типов???

Отключить их соответствующей прагмой

Но учти, что преобразование типа все равно будет и координаты останутся целыми, а не дробными, как ты хочешь
Re: CRect(int, double) ???
От: piAnd Россия  
Дата: 14.05.03 10:39
Оценка:
Здравствуйте, altmenn, Вы писали:

A>Привет всем!

A> Вопрос такой вот

A>
A>CRect(left,top,right,2.5* bottom);
A>

A>Надо для поддержания "красивости" графика нормировать прямоугольник дробными коэффициентами...
A>ТО есть ну ни как не 3 и не 2,а именно 2.5 дает правильную ширину...Так как CRect по докуметации имеет тпи параметров int, то хотелось бы выяснить, как в таком случае бороться с варнингами по преобразованию типов???
A>СПАСИБО!
Варнинг по преобразованию вещ-го в целое?
Просто преобразовывать явно
(int)(2.5*bottom)
Re: CRect(int, double) ???
От: Lorenzo_LAMAS  
Дата: 14.05.03 10:41
Оценка:
явно преобразовывай тип static_cast<int>(2.5*...) или (int)lalala или int(lalala)
Of course, the code must be complete enough to compile and link.
Re[2]: CRect(int, double) ???
От: altmenn Германия DLR IPA
Дата: 14.05.03 12:14
Оценка:
Здравствуйте, UgN, Вы писали:

A>
A>CRect(left,top,right,2.5* bottom);
A>


UgN>Но учти, что преобразование типа все равно будет и координаты останутся целыми, а не дробными, как ты хочешь


Вот в том то и оно — что 2 и 2.5 выглядят на экране по разному!

Удалено избыточное цитирование. -- ПК.
Безвыходных ситуаций не бывает!(Правило Кирхгофа)
Re[3]: CRect(int, double) ???
От: limax Россия http://mem.ee
Дата: 14.05.03 12:55
Оценка:
Здравствуйте, altmenn, Вы писали:

UgN>Но учти, что преобразование типа все равно будет и координаты останутся целыми, а не дробными, как ты хочешь

A>Вот в том то и оно — что 2 и 2.5 выглядят на экране по разному!

Само собой, что выглядят по-разному. Вычисляется-то с плавающей точкой.
Коэффициент фиксированный?
CRect(left,top,right,bottom*5/2);
И быстрее, чем в float/из float-а конвертировать.
Have fun: Win+M, Ctrl+A, Enter
Re[4]: CRect(int, double) ???
От: altmenn Германия DLR IPA
Дата: 14.05.03 13:08
Оценка:
Здравствуйте, limax, Вы писали:

L>Здравствуйте, altmenn, Вы писали:


UgN>Но учти, что преобразование типа все равно будет и координаты останутся целыми, а не дробными, как ты хочешь

A>Вот в том то и оно — что 2 и 2.5 выглядят на экране по разному!

L>Само собой, что выглядят по-разному. Вычисляется-то с плавающей точкой.

L>Коэффициент фиксированный?
L>CRect(left,top,right,bottom*5/2);
L>И быстрее, чем в float/из float-а конвертировать.


Aaaa....
int(5/2) = 2
...
или у меня не все дома?
Наверно я просто не знаю что происходит при таких преобразованиях...
Памажыце, калiласка!
Безвыходных ситуаций не бывает!(Правило Кирхгофа)
Re[5]: CRect(int, double) ???
От: limax Россия http://mem.ee
Дата: 14.05.03 13:17
Оценка: 14 (1)
Здравствуйте, altmenn, Вы писали:

L>CRect(left,top,right,bottom*5/2);

L>И быстрее, чем в float/из float-а конвертировать.

A>Aaaa....

A>int(5/2) = 2
A>...
A>или у меня не все дома?

Чего ж тут непонятного?
int(5/2) == 2
Но:
int(10*5/2) == 25

Порядок ассоциативности ещё никто не отменял, поэтому bottom*5/2 вычисляется как (bottom*5)/2
Have fun: Win+M, Ctrl+A, Enter
Re[5]: CRect(int, double) ???
От: DeaTH FaNG США http://users.livejournal.com/_denplusplus_
Дата: 14.05.03 13:18
Оценка:
L>>CRect(left,top,right,bottom*5/2);
L>>И быстрее, чем в float/из float-а конвертировать.

A>Aaaa....

A>int(5/2) = 2

7*5/2==(7*5)/2=17
7*2==14

Делай выводы....
... << RSDN@Home 1.0 beta 7a >>

Удалено избыточное цитирование. -- ПК.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.