我有一个像下面这样的基类,它计算2种不同类型的一些统计信息:
public abstract class BaseStatsCalculator<T>
{
public abstract T First { get; }
public abstract T Second { get; }
public abstract T ValueDiff { get; protected set; }
public abstract T MatchingPercentage { get;}
}
现在我有 2种类型,它们将以自己的方式操纵上述属性的值。
对于 Type1 ,我知道以下属性将始终适用于int datatype
:
public abstract T First { get; }
public abstract T Second { get; }
public abstract T ValueDiff { get; protected set; }
我在计算MatchingPercentage属性时遇到问题,因为它将基于公式进行计算,并且四舍五入将基于用户为最终位置选择的配置。
public class Type1 : BaseStatsCalculator<int>
{
public override double MatchingPercentage
{
get {
double a = (Second - ValueDiff) * 100;
double b = Second;
double matchingPercentage = 00.00;
if (b > 0)
matchingPercentage = Math.Round(((double)a / b), this._decimalPlaces);
}
}
}
类型2具有以下公式来计算MatchingPercentage:
public class Type1 : BaseStatsCalculator<Decimal>
{
public override decimal MatchingPercentage
{
get {
decimal matchPer = 0;
if (Second > 0 || First > 0)
matchPer = ((Math.Min(Second,First) / Math.Max(Second,First)) * 100);
return (TruncateDecimal(matchPer, this.decimalPlaces))
}
}
public decimal TruncateDecimal(decimal value, int precision)
{
decimal step = (decimal)Math.Pow(10, precision);
decimal tmp = Math.Truncate(step * value);
return tmp / step;
}
}
所以对于类型2,我认为我没有问题,但是对于类型1,我在这里面临问题:
公共优先级double MatchingPercentage { }
错误: It should work with int
有人可以指导我如何解决这个问题吗?