c# - 如何使用泛型开发适用于 double 和小数的代码

标签 c# c#-4.0

下面的代码重复性很强:

 public static double Interpolate(double x1, double y1, double x2, double y2, double x)
    {
        return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
    }
    public static decimal Interpolate(decimal x1, decimal y1, decimal x2, decimal y2, decimal x)
    {
        return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
    }

但是,我尝试使用泛型并没有编译:

 public static T Interpolate<T>(T x1, T y1, T x2, T y2, T x)
    {
        return y1 + (x - x1) * (y2 - y1) / (x2 - x1);
    }

错误信息如下:

错误 2 运算符 '-' 不能应用于 'T' 和 'T' 类型的操作数 C:\Git...\LinearInterpolator.cs

我应该如何重用我的代码?

编辑:快速运行对于这个模块很重要。

最佳答案

您当前的代码没有问题 - 可能是您在不将 double 转换为小数的情况下可以实现的最佳代码。

通用解决方案可能,但会涉及相当多的基础设施 - 如此之多以至于会使事情变得过于复杂。

关于c# - 如何使用泛型开发适用于 double 和小数的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301594/

相关文章:

c# - 根据以前的 XML 组合框选择填充组合框

c# - 在SQL中选择TOP行,得到5行尾表

asp.net-mvc - 无法打开项目,因为其项目类型 (.modelProj) 不受支持

asp.net-mvc-3 - 我如何构建一个自定义模型绑定(bind)器,它将根据请求上下文返回不同类型的模型?

c# - 为什么即使进程确实存在,Process.WaitForExit 也会抛出 "no process"异常?

c# - 多表连接优化性能

javascript - 拖放列表项后获取列表顺序 asp.net c#

c# - 谁应该了解 Asp.Net MVC 中的页面标题?

c# - XML LINQ 查询不返回任何数据

asp.net - Sitecore 检测到项目保存在 EventDisabler() 上下文中