首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能提供小于分数位定义的指示域。

不能提供小于分数位定义的指示域。
EN

Stack Overflow用户
提问于 2019-07-11 09:32:04
回答 1查看 235关注 0票数 1

我和杨一起工作(RFC 6020)。我有一个叶节‘频率’在阳。频率场为decimal64型,分数位定义为6,范围从-90.000000到90.000000.在尝试验证和保存时,会发生以下情况:

  1. 有6个小数的数字会被保存。34.000001
  2. 没有小数的数字会被保存。34

但是当我尝试用小于6位的小数值保存数字时,它不会被保存。它产生了以下错误:例如。

  • 34.1:“错误的分数-decimal64类型的数字1”
  • 34.001:“decimal64类型的错误分数-数字3”
  • 34.00001:“decimal64类型的错误分数-数字5”

试图在网上搜索。这方面的文件不多。尝试使用范围参数,但它不起作用。

代码语言:javascript
复制
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等

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 13:03:06

将分数位数设置为6的decimal64 YANG类型值的值空间是以下范围内的实数:-9223372036854.775808..9223372036854.7758073434.134.00134.00434.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

你使用的工具是错误的。以下是有效的杨:

代码语言:javascript
复制
  typedef foobar {
    type decimal64 {
      fraction-digits 6;
      range "-90.000000..90.000000";
    }
    default 34.00001;
  }

杨1.1 (RFC7950)没有改变语言的这一方面(同样适用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56986073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档