docs hotfix

This commit is contained in:
chertus 2018-09-19 16:52:32 +03:00
parent 771bc2eaac
commit f5e82687a5

View File

@ -16,9 +16,9 @@
## Диапазоны Decimal
- Decimal32(scale) - ( -1 * 10^(9-scale), 1 * 10^(9-scale) )
- Decimal64(scale) - ( -1 * 10^(18-scale), 1 * 10^(18-scale) )
- Decimal128(scale) - ( -1 * 10^(38-scale), 1 * 10^(38-scale) )
- Decimal32(S) - ( -1 * 10^(9 - S), 1 * 10^(9 - S) )
- Decimal64(S) - ( -1 * 10^(18 - S), 1 * 10^(18 - S) )
- Decimal128(S) - ( -1 * 10^(38 - S), 1 * 10^(38 - S) )
Например, Decimal32(4) содержит числа от -99999.9999 до 99999.9999 c шагом 0.0001.
@ -27,13 +27,13 @@
Внутри данные представляются как знаковые целые числа, соответсвующей разрядности. Реальные диапазоны, хранящиеся в ячейках памяти несколько больше заявленных. Заявленные диапазоны Decimal проверядтся только при вводе числа из строкового представления.
Поскольку современные CPU не поддежривают 128-битные числа, операции над Decimal128 эмулируется программно. Decimal128 работает в разы медленней чем Decimal32/Decimal64.
## Операций и типы результаты
## Операций и типы результата
Результат операции между двумя Decimal расширяется до большего типа (независимо от порядка аргументов).
Decimal64(S1) <op> Decimal32(S2) -> Decimal64(S)
Decimal128(S1) <op> Decimal32(S2) -> Decimal128(S)
Decimal128(S1) <op> Decimal64(S2) -> Decimal128(S)
- Decimal64(S1) <op> Decimal32(S2) -> Decimal64(S)
- Decimal128(S1) <op> Decimal32(S2) -> Decimal128(S)
- Decimal128(S1) <op> Decimal64(S2) -> Decimal128(S)
Для размера дробной части (scale) результата действуют следующие правила:
- сложение, вычитание: S = max(S1, S2).
@ -41,8 +41,11 @@ Decimal128(S1) <op> Decimal64(S2) -> Decimal128(S)
- деление: S = S1.
При операциях между Decimal и целыми числами результатом является Decimal, аналогичный аргументу.
Операции между Decimal и Float32/64 не определены. Для осуществления таких операций нужно явно привести один из агруметнов функциями: toDecimal32, toDecimal64, toDecimal128, или toFloat32, toFloat64. Это сделано из вдух соображений. Во-первых, результат операции будет с потерей точности. Во-вторых, преобразование типа - дорогая операция, из-за ее наличия пользовательский запрос может работать в несколько раз дольше.
Часть функций над Decimal возвращают Float64 (например, var, stddev). Для некоторых из них промежуточные операции проходят в Decimal. Для таких функций результат над одинаковыми данными во Float64 и Decimal может отличаться, несмотря на одинаковый тип результата.
Часть функций над Decimal возвращают Float64 (например, var, stddev). Для некоторых из них промежуточные операции проходят в Decimal.
Для таких функций результат над одинаковыми данными во Float64 и Decimal может отличаться, несмотря на одинаковый тип результата.
## Проверка переполнений