Используйте ROUND
, который округляет первый аргумент до количества десятичных разрядов, указанного во втором аргументе
=IF(ROUND(AL23 * 0.2, 2) = AM23, "a", "r")
Рассмотрим ROUNDDOWN
или ROUNDUP
для другого поведения округления: ROUND
будет круглые полпути и выше вверх.
(Кроме того, не стоит жестко кодировать ставку НДС в формуле в случае ее изменения в будущем.)
Параметры шаблона могут быть выведены для шаблонов функций , когда тип параметра может быть выведен из параметров шаблона
. Таким образом, здесь можно сделать вывод:
template <typename T>
void f(T t);
template <typename T>
void f(std::vector<T> v);
, но не здесь:
template <typename T>
T f() {
return T();
}
А не в шаблонах классов .
Поэтому обычное решение вашей проблемы - создать функцию-оболочку, аналогичную стандартной библиотечной функции std :: make_pair
:
template <class T>
class MyClass {
public:
MyClass(T t) {}
void print(){
std::cout<<"try MyClass"<<std::endl;
}
};
template <typename T>
MyClass<T> MakeMyClass(T t) { return MyClass<T>(t); }
, а затем вызовите auto a = MakeMyClass (5);
для создания экземпляра класса.
Читайте о Шаблонном выводе аргумента (и ADL или поиске Кенига ).