Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Что то с Convert.ToInt16


Автор: Qhermit 17.4.2008, 17:11
Даже не брав переменые а путо писать вот так:
int max = Convert.ToInt16(800/3600*100);
Переменая max получается равная "0", хотя должна быть "22"

Если берешь 
int max = Convert.ToInt16(20/10*100);  
Тогда получаешь "200" как нужно

Если 
max = Convert.ToInt16((25/10)*100);  
Должно быть "250" но получаешь "200"

Если 
max = Convert.ToInt16((20/40)*100);
Должно быть "50" но получаешь "0"   из этого получается что оно когда 20/40 посчитало округлило и после этого только домножило на 100

делал через double так:
double max2;
max2 = 25/ 10 * 100; (по разному)
max = Convert.ToInt16(max2);  
Эфект тот же что и без double с темиже значениями...

Вообще не понимаю почему оно так делает:(

Подскажите что мне делать, мне нужно получать количество процентов заполнения, значения примерные будут на примере таких: 800/3600*100, значения целые нужны например как тут 22 должно получится.


Автор: Rififi 17.4.2008, 17:45
Qhermit
результат деления целых чисел усекается до целого.
поэтому 800/3600 = 0
и т.д.
как правильно:
800.0 / 3600.0

Автор: Optimus 17.4.2008, 17:48
Почитайте вот http://forum.vingrad.ru/forum/topic-201733/hl/index.html

P.S. если оба операнда целочисленные, то и деление целочисленное.

Автор: Qhermit 17.4.2008, 21:23
RififiOptimus,  спасибо большое =) 
Пока диплом сделаю столько узнаю...  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)