Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Почему в С# эдак, а в VB.NET нормально?


Автор: thomas 21.3.2008, 00:37
Приветствую.
Вот заучился до ручки.  smile  

В общем подскажите студенту,
почему в VB.NET 
Код

dim res as decimal = 130/100

результат 1,3
а такой же код на C#
Код

decimal res = 130/100;

выдает 1?

где грабли?  smile 

Автор: creatorcode 21.3.2008, 00:49
Потому, что вы делите целые числа. Попробуйте так:
Код

decimal res = 130.m/100;

Автор: thomas 21.3.2008, 01:09
creatorcode
Приветствую.
И в чём "фишка"?  smile 
И как мне теперь эту "m" прикрутить сюды
Код

public decimal VerkoopPrijs
            {
                get
                {
                    return _verkoopPrijs = decimal.Round((_huidigePrijs * ((100 + _winst) / 100)), 2);
                }
            }

Автор: rubbiroid 21.3.2008, 13:00
Можно еще вот так
Код

return _verkoopPrijs = decimal.Round((_huidigePrijs * ((float)(100 + _winst) / 100)), 2);

Автор: source777 21.3.2008, 14:19
Цитата(thomas @  21.3.2008,  01:09 Найти цитируемый пост)
И в чём "фишка"?  smile 
Фишка в С++, если оба операнда целочисленные, то и деление целочисленное:
130/100 = 1
130%100 = 30


Автор: creatorcode 21.3.2008, 14:24
"m" - суффикс для литералов типа decimal
Прикрутить можно, например, так:
Код

return _verkoopPrijs = decimal.Round((_huidigePrijs * ((100 + _winst) / 100.0m)), 2);

Автор: thomas 21.3.2008, 21:24
сделал так
Код

return _verkoopPrijs = decimal.Round((_huidigePrijs * ((decimal)(100 + _winst) / 100)), 2);


rubbiroid,  smile 

Автор: vponomarov 22.3.2008, 00:26
явное приведение типов рулит smile 

Автор: archimed7592 24.3.2008, 19:13
Цитата(creatorcode @  21.3.2008,  00:49 Найти цитируемый пост)
130.m

Зачем и точка и суффикс? Точка говорит, что литерал будет double, суффикс - decimal. Ессно суффикс будет иметь предпочтение, но всё равно точка здесь как-то не к месту smile.


Цитата(vponomarov @  22.3.2008,  00:26 Найти цитируемый пост)
явное приведение типов рулит smile  

А по моему "рулят" суффиксы. Литерал есть литерал - зачем его ещё приводить куда-то.

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