我正在为产品做一个小调查,每个用户可以对产品的每一个属性(比如:清洁和整洁、服务、位置、员工)进行5分(以后会增加)的调查。每个分数都有一个形容词(1:最差,2:差,3:好,4:非常好,5:非常好)。
例如,用户可以轮询到某个产品,如下所示:
干净整洁:4(非常好)
服务:3(良好)
位置:1(最差)
工作人员:5人(特别)
这个分数的平均值就是产品的分数,它是十进制的,在这个例子中,它是3.25。
现在我想用这个结果(3.25)来形容乘积,如果它的点在3.25的一半以下,它会向下舍入(对于这个3),如果它的点在3.7的一半以上,它会向上舍入(4)
我想知道最好的算法是什么?
我的班级设计如下:

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;}
}

最佳答案

您可以使用Convert.ToInt32(Math.Round(score))将值舍入为整数值,并使用Dictionary()保存属性值,这样您可以执行以下操作:
poll.attribute = lookup[Convert.toInt32(Math.Round(score))];

关于c# - 小型轮询机制的最佳算法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38157527/

10-13 03:36