Преобразовать INumber в С# в число с плавающей запятой? .net 7 или новееC#

Место общения программистов C#
Ответить
Anonymous
 Преобразовать INumber в С# в число с плавающей запятой? .net 7 или новее

Сообщение Anonymous »

Как можно преобразовать a или b в число с плавающей запятой перед фактическим элементом div?

Код: Выделить всё

T Div(T a, T b) where T : INumber
{
return a / b;
}
Должно работать для любого «простого» числового типа. Для целочисленных типов расчет наклона требует преобразования в тип с плавающей запятой. Итак, как можно преобразовать целое число как T в число с плавающей запятой и обратно. Входные значения и возвращаемые значения являются целыми числами, но во время вычислений необходимо использовать число с плавающей запятой.

Код: Выделить всё

public static T LinearBetween((T x1, T y1) a, (T x2, T y2) b, T x) where T : INumber
{
//f(x) = m*x + n
var m = (b.y2 - a.y1) / (float)(b.x2 - a.x1);
var n = b.y2 - m * b.x2;

return (T)Math.Round(x * m + n);
}
Изменить: сначала вставлен код без T.
Отредактировано: этот код не работает. (float)(b.x2 - a.x1) выдает «Невозможно преобразовать T в число с плавающей запятой»

Подробнее здесь: https://stackoverflow.com/questions/791 ... 7-or-newer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»