我和杨一起工作(RFC 6020)。我有一个叶节‘频率’在阳。频率场为decimal64型,分数位定义为6,范围从-90.000000到90.000000.在尝试验证和保存时,会发生以下情况:
但是当我尝试用小于6位的小数值保存数字时,它不会被保存。它产生了以下错误:例如。
试图在网上搜索。这方面的文件不多。尝试使用范围参数,但它不起作用。
leaf Frequency {
description "Frequency";
type decimal64 {
fraction-digits 6;
range "-90.000000..90.000000";
}
default 0;
}我希望能够保存小数值不能从0到6位数变化的小数值。例如:34、34.1、34.0004、34.000001等
发布于 2019-07-11 13:03:06
将分数位数设置为6的decimal64 YANG类型值的值空间是以下范围内的实数:-9223372036854.775808..9223372036854.775807。34、34.1、34.001、34.004、34.00001都在此范围内,因此是有效值。
这就是RFC对decimal64内置类型(RFC6020,9.3节,p1)的看法:
decimal64类型表示实数的子集,可以用十进制数字表示。decimal64的值空间是通过将64位有符号整数乘以10的负幂得到的一组数字,即可以表示为“Ix10^-n”,其中i是integer64,n是介于1到18之间的整数。
因此,基本上,d x 10^f,其中d是一个decimal64值,f是分数位,必须得到一个有效的int64值,包含在-9223372036854775808到9223372036854775807之间的范围。
下面是分数位的定义(RFC6020,9.3.4节,p1):
如果类型为"decimal64“,则必须存在”分数位“语句,它是" type”语句的子语句。它以1到18之间的整数作为参数,包括在内。它通过将值空间限制为可以表示为“Ix10^-n”的数字,从而控制decimal64类型值之间的最小差的大小,其中n是分数位参数。下表列出了每个分数-数字值的最小和最大值:+----------------+-----------------------+----------------------+ (分数)-位分数-位数( min )\x{e76f}\x{e76f}----+-----------------------+----------------------+ =92233720368547758.08/92233720368547758.08/ 92233720368547758.07 /3922337203685477.5807
你使用的工具是错误的。以下是有效的杨:
typedef foobar {
type decimal64 {
fraction-digits 6;
range "-90.000000..90.000000";
}
default 34.00001;
}杨1.1 (RFC7950)没有改变语言的这一方面(同样适用)。
https://stackoverflow.com/questions/56986073
复制相似问题