Я пишу небольшой опрос на продукцию, продукт которого может быть опрошен каждым пользователем в 5 баллов (что может увеличиться позже) для каждого из его свойств (например: Чистота и аккуратность, Услуги, местоположение, Персонал). у каждого балла есть прилагательное (1: худшее, 2: плохое, 3: хорошее, 4: очень хорошее, 5: необычное).Каков наилучший алгоритм для небольшого механизма опроса?
, например, пользователь может опрашивать к одному из продукта, как это: чистота и опрятность: 4 (очень хорошо) Услуги: 3 (хорошо) место: 1 (худший) Персонал: 5 (внеочередная)
Среднее значение этого показателя будет оценкой продукта, и оно будет десятичным, для этого примера это 3,25.
Теперь я хочу приложить к прилагательному произведение к этому результату (3.25), если оно находится под половиной наподобие 3.25, оно округляется до нуля (для этого 3), и если это точка равна и выше наполовину, как 3.7, он округляется до 4 (4)
Мне интересно, какой из лучших алгоритмов для этого?
мой classs' дизайн, как показано ниже:
public class Product
{}
public Class Poll
{
public int Id {get; set;}
public int ProductId {get; set;}
public Product Product {get; set;}
public decimal Score {get; set}
public string Adjective {get; set;}
public ICollection<PollAttributes> Attributes {get; set;}
}
public class Attribute // for the attribute like Services
{
public int Id {get; set;}
public string Title {get; set;}
public ICollection<PollAttributes> Attributes {get; set;}
}
public Class PollAttributes
{
public decimal score {get; set;}
public int AttributeId {get; set;}
public Attribute{get; set;}
public int PollId {get; set;}
public Poll Poll {get; set;}
}
Просто также учитывайте «нечетное» поведение округления по умолчанию .NET: округление банкира. Это может не всегда дать вам ответ, который вы ожидаете. Поэтому я настоятельно рекомендую использовать: 'Math.round (оценка, MidpointRounding.AwayFromZero)' , так как это даст вам округление, которое вы ожидаете. – daf