another fix

This commit is contained in:
myrrc 2020-12-18 18:37:00 +03:00
parent e2556659e0
commit 985876b737
3 changed files with 30 additions and 5 deletions

View File

@ -348,6 +348,29 @@ struct DecimalBinaryOperation
return;
}
}
else if constexpr(is_multiply && (!is_decimal_a || !is_decimal_b)) // BUG very bad solution
{
if (scale_a != 1)
{
for (size_t i = 0; i < size; ++i)
if constexpr(IsDecimalNumber<ResultType>)
c[i] = apply(a, undec(a[i])) / DecimalUtils::scaleMultiplier<NativeResultType>(scale_a);
else
c[i] = apply(a, undec(a[i])) / DecimalUtils::scaleMultiplier<Int64>(scale_a);
return;
}
else if (scale_b != 1)
{
for (size_t i = 0; i < size; ++i)
if constexpr(IsDecimalNumber<ResultType>)
c[i] = apply(a, undec(b[i])) / DecimalUtils::scaleMultiplier<NativeResultType>(scale_b);
else
c[i] = apply(a, undec(b[i])) / DecimalUtils::scaleMultiplier<Int64>(scale_b);
return;
}
}
else if constexpr (is_division && is_decimal_b)
{
for (size_t i = 0; i < size; ++i)

View File

@ -3,10 +3,10 @@
0.00012000000000000002
150.16500000000002
7.775900000000001
56.622689999999995
598.8376688440277
56622.689999999995
5.988376688440276
2.9941884322906844
1.641386318314034
1.641386318314034
1.6413863211679272
1.6413863211679272
1.6413863192433382
1.6413863192433382

View File

@ -14,7 +14,9 @@ INSERT INTO test01603(f64) SELECT 1 / (number + 1) FROM system.numbers LIMIT 100
SELECT sum(d * 1.1) FROM test01603;
SELECT sum(8.01 * d) FROM test01603;
SELECT sum(f64 * toDecimal64(80, 2)) FROM test01603;
SELECT sum(toDecimal64(0.4, 2) * f32) FROM test01603;
SELECT sum(toDecimal64(40, 2) * f32) FROM test01603;
SELECT sum(f64 * toDecimal64(0.1, 2)) FROM test01603;
SELECT sum(toDecimal64(0.3, 2) * f32) FROM test01603;
SELECT sum(f64 * d) FROM test01603;
SELECT sum(d * f64) FROM test01603;