Я хотел бы создать общую функцию, которая будет принимать два параметра любого типа данных (хотя они всегда будут своего рода числом), а затем умножать их вместе, округлять их и возвращать их значение как целое число.
Я создал шаблонную функцию, но я хотел бы получить отзыв об этой функции.Будет ли он работать во всех случаях со значениями, содержащими short, int, float, decimal и т. Д.?Если нет, то как я могу изменить это, чтобы сделать это?
// Header File
class MathFunctions
{
public:
template<typename A, typename B>
static int MultiplyToInt(
const A const& base,
const B const& multiplier);
};
// CPP File
#include "MathFunctions.h"
template<typename A, typename B>
int MathFunctions::MultiplyToInt(
const A const& base,
const B const& multiplier)
{
return static_cast<int>(floor(base * multiplier));
}
// Sample code to run the function
float value = 0.82;
const int result = MathFunctions::MultiplyToInt<int, float>(10, value);
Результат должен содержать значение 8, но если параметры были десятичными, float, int, long, short и т. Д. ... itвсе еще должен быть в состоянии работать как ожидалось.