Как можно преобразовать a или b в число с плавающей запятой перед фактическим элементом div?
Код: Выделить всё
T Div(T a, T b) where T : INumber
{
return a / b;
}
Должно работать для любого «простого» числового типа. Для целочисленных типов расчет наклона требует преобразования в тип с плавающей запятой. Итак, как можно преобразовать целое число как T в число с плавающей запятой и обратно. Входные значения и возвращаемые значения являются целыми числами, но во время вычислений необходимо использовать число с плавающей запятой.
Код: Выделить всё
public static int LinearBetween((int x1, int y1) a, (int x2, int y2) b, int x)
{
//f(x) = m*x + n
var m = (b.y2 - a.y1) / (float)(b.x2 - a.x1);
var n = b.y2 - m * b.x2;
return (int)Math.Round(x * m + n);
}
Отредактировано: этот код не работает. (float)(b.x2 - a.x1) выдает «Невозможно преобразовать T в число с плавающей запятой»
Подробнее здесь:
https://stackoverflow.com/questions/791 ... 7-or-never