Выходные данные имеют бесконечные десятичные дроби, и когда я умножаю это на целое число, результатом должно быть целое число.
На самом деле этого не произойдет.
Что вы можете сделать, это осторожное округление (после умножения).
Или вместо
result = someInteger * decimal.divide(240/360);
вы можете использовать
result = someInteger * 240 / 360;
в чем проблема?
Когда вы действительно серьезно относитесь к работес дробями и сохраняя точность, вам понадобится специальный тип:
struct Rational
{
public readonly int Numerator;
public readonly int Denominator;
// lots of members, including operators
}
Есть библиотеки и примеры , как это сделать.
Но учтите, что вы все равно не сможете точно представить π.