Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .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 |
Rififi, Optimus, спасибо большое =) Пока диплом сделаю столько узнаю... ![]() |