I've been studying basic usage and I found wrong minus result on DecimalXX type.

**Example Query**
`
select toDecimal64(4,4) - toDecimal32(2,2)
`

**Expected output**
2.0000

**Actual output**
3.9800

Is there anything wrong or maybe my misunderstanding of toDecimal ?

![image](https://user-images.githubusercontent.com/8475371/107513855-cdd57a00-6be3-11eb-841d-d425a198d172.png)


**How to reproduce**
1. OS: macOS Catalina 10.15.5
2. server: clickhouse-server, built from source, version 21.3.1.1
3. client:  clickhouse-client,  built from source, version 21.3.1.1

size_t input_rows_count, const FunctionOverloadResolverPtr & function_builder) const
    {
        ColumnsWithTypeAndName new_arguments = arguments;
        
        if (WhichDataType(arguments[1].type).isDateOrDateTime())
            std::swap(new_arguments[0], new_arguments[1]);
        
        new_arguments[1].type = std::make_shared<DataTypeNumber<DataTypeInterval::FieldType>>();
        auto function = function_builder->build(new_arguments);
        return function->execute(new_arguments, result_type, input_rows_count);
    }
    template <class T, class ResultDataType, class CC, class C>
    static auto helperGetOrConvert(const CC & col_const, const C & col)