Я использовал MVC для того, так как Предварительный просмотр 3 вышел и в то время как это, все еще имеет, это - болезнь роста, это помогает вполне немного в области разработки команды. Попытайтесь иметь три работы человек на единственной странице веб-форм, и затем Вы поймете понятие стука по Вашей голове на стене. Я могу работать с разработчиком, который понимает элементы дизайна на странице представления и нашем резидентном боге Linq в создании образцовой работы, в то время как я соединил все в контроллере. Я никогда не был в состоянии разработать в области, где разделения проблем было настолько легко достигнуть.
Самый большой коммерческий аргумент ASP.NET MVC - StackOverflow работает на стеке MVC.
, Что, будучи сказанным... Ваш код настолько более симпатичен, чем, что я обычно делаю со страницей представления. Кроме того, один из парней, с которыми я работаю, работает над обертыванием помощника HTML в библиотеку тегов. Вместо < % =Html. RandomFunctionHere () %> это работает как
< hh:randomfunction/>
я просто надеюсь, что команда MVC находит время для него в какой-то момент, потому что я уверен, что они сделали бы лучшее задание его.
Вы используете int / int, который делает все в целочисленной арифметике, даже если вы присваиваете переменную decimal / double / float.
Заставить один из операндов иметь тип, который вы хотите использовать для арифметики.
for (int i = 0; i <= 100; i++)
{
decimal result = i / 100m;
long result2 = i / 100;
double result3 = i / 100d;
float result4 = i / 100f;
Console.WriteLine("{0}/{1}={2} ({3},{4},{5}, {6})",
i, 100, i / 100d, result, result2, result3, result4);
}
Результаты:
0/100=0 (0,0,0, 0)
1/100=0.01 (0.01,0,0.01, 0.01)
2/100=0.02 (0.02,0,0.02, 0.02)
3/100=0.03 (0.03,0,0.03, 0.03)
4/100=0.04 (0.04,0,0.04, 0.04)
5/100=0.05 (0.05,0,0.05, 0.05)
(и т.д.)
Обратите внимание, что не показывает точное значение, представленное числом с плавающей запятой или двойным числом - вы не может представлять 0,01 в точности как, например, float или double. Форматирование строки эффективно округляет результат. См. Мою статью о двоичной плавающей запятой .NET для получения дополнительной информации, а также класс, который позволит вам увидеть точное значение типа double.
Я не беспокоился об использовании 100L для result2
, потому что результат всегда будет одинаковым.
Поскольку i является целым числом, а 100 - целым числом ... поэтому у вас есть целочисленное деление
Попробуйте вместо этого (десятичное) i / 100.0
, потому что i
является int : i / 100
] выполняет целочисленное деление, затем результат, который всегда равен 0, приводится к целевому типу. В выражении необходимо указать хотя бы один литерал, не являющийся int:
i / 100.0
Независимо от того, где вы его храните, целое число, разделенное на целое, всегда будет целым числом.
Вам нужно принудительно выполнить операцию с плавающей запятой "double / double" вместо "int / int"
double result = (double)297 / (double)315 ;
это целочисленное деление независимо от типа переменной, в которой вы храните, поэтому int / int = int
Поскольку i является значением int , и вы делите его на целое число, поэтому результат будет целым! и поэтому вам нужно разделить на 100,0 , чтобы иметь неявное приведение в float, или укажите 100f или 100d