Пространство значений для десятичного значения типа YANG с дробными цифрами, установленными в 6, являются действительными числами в следующем диапазоне: -9223372036854.775808..9223372036854.775807
. 34
, 34.1
, 34.001
, 34.004
, 34.00001
все находятся в этом диапазоне и, следовательно, допустимые значения.
Вот что говорит RFC о встроенном типе decimal64 ( RFC6020, раздел 9.3, p1 ):
Тип decimal64 представляет собой подмножество вещественных чисел, которое может
быть представлен десятичными цифрами. Пространство значений decimal64:
набор чисел, который можно получить, умножив 64-битный
целое число со знаком с отрицательной степенью десяти, то есть выражается как
«i x 10 ^ -n», где i - целое число 64, а n - целое число от 1 до
18 включительно.
Таким образом, d x 10^f
, где d
- это десятичное значение64, а f
- это дробные цифры, что должно приводить к действительному значению int64, которое колеблется от * 9213372036854775808 до 9223372036854775807, включительно .
Вот как определяются дробные цифры ( RFC6020, раздел 9.3.4, p1 ):
Оператор "дробные цифры", который является подстановкой
оператор "type" ДОЛЖЕН присутствовать, если типом является "decimal64". Это
принимает в качестве аргумента целое число от 1 до 18 включительно. Это
контролирует размер минимальной разницы между значениями
тип decimal64, ограничивая пространство значений числами, которые
выражается как «i x 10 ^ -n», где n - аргумент дробных цифр.
В следующей таблице перечислены минимальное и максимальное значение для каждого
дробно-разрядное значение:
+----------------+-----------------------+----------------------+
| fraction-digit | min | max |
+----------------+-----------------------+----------------------+
| 1 | -922337203685477580.8 | 922337203685477580.7 |
| 2 | -92233720368547758.08 | 92233720368547758.07 |
| 3 | -9223372036854775.808 | 9223372036854775.807 |
| 4 | -922337203685477.5808 | 922337203685477.5807 |
| 5 | -92233720368547.75808 | 92233720368547.75807 |
| 6 | -9223372036854.775808 | 9223372036854.775807 |
| 7 | -922337203685.4775808 | 922337203685.4775807 |
| 8 | -92233720368.54775808 | 92233720368.54775807 |
| 9 | -9223372036.854775808 | 9223372036.854775807 |
| 10 | -922337203.6854775808 | 922337203.6854775807 |
| 11 | -92233720.36854775808 | 92233720.36854775807 |
| 12 | -9223372.036854775808 | 9223372.036854775807 |
| 13 | -922337.2036854775808 | 922337.2036854775807 |
| 14 | -92233.72036854775808 | 92233.72036854775807 |
| 15 | -9223.372036854775808 | 9223.372036854775807 |
| 16 | -922.3372036854775808 | 922.3372036854775807 |
| 17 | -92.23372036854775808 | 92.23372036854775807 |
| 18 | -9.223372036854775808 | 9.223372036854775807 |
+----------------+-----------------------+----------------------+
Используемый вами инструмент неверен. Следующее действительно YANG:
typedef foobar {
type decimal64 {
fraction-digits 6;
range "-90.000000..90.000000";
}
default 34.00001;
}
YANG 1.1 ( RFC7950 ) не изменил этот аспект языка (применяется то же самое).