CURRENT PRECISION 特别登记簿

CURRENT PRECISION(当前精度)指定了当十进制运算中的两个操作数精度均为15或更小时所使用的规则。

登记的数据类型为字符串(5)。

CURRENT PRECISION 特殊寄存器的有效值包括“ DEC15 ”、“ DEC31 ”或“D pp. s ”,其中“ pp ”为 15 或 31,“ s ”是 1-9 范围内的数字。 DEC15 指定了不允许精度超过15位的规则,而 指定了允许精度达到31位的规则。 DEC31 如果操作数的精度大于 15,那么总是使用 DEC31 的规则。 如果使用“D pp. s ”形式,则“ pp ”表示将用作使用 DEC15 和 DEC31 规则的规则的精度,“ s ”表示用于除法运算的最小除法比例。 形式“D pp. s ”中使用的分隔符可以是“。” 或“,”字符,无论默认小数点设置如何。

当前精度的初始值由安装面板 DSNTIP4 上的现场十进制算术值决定。 初始值的默认值为 DEC15 ,除非您的安装通过修改该字段中的值将其更改为 DEC31。 用户定义函数或存储过程中的当前精度初始值根据表1中的规则进行继承。

您可以通过执行语句SET CURRENT PRECISION来更改寄存器的值。

CURRENT PRECISION 仅影响动态 SQL。 当SQL语句动态准备且CURRENT PRECISION的值为 DEC15 或 D15.s 时,其中 “s” 是1-9之间的数字,将应用 DEC15 规则。 当动态准备 SQL 语句且 CURRENT PRECISION 的值为 DEC31 或 D31.s (其中 “s” 是 1-9 之间的数字)时,将应用 DEC31 规则。 用 DEC31 代替 DEC15 编写语句更容易出错,特别是进行除法运算时。 以“D pp. s ”形式指定当前精度,其中“ pp ”为 15 或 31,“ s ”代表最小除法小数位数,在某些情况下,当“ pp ”设置为 31 时,出现除法错误的可能性会更小。 更多信息,请参阅 《两位小数运算的算术 》。

示例1:设置当前精度,以便后续准备好的语句使用 DEC31 规则进行十进制运算:
   SET CURRENT PRECISION = 'DEC31';
示例2:设置当前精度,以便后续语句使用 DEC31 规则进行十进制运算,最小分度为3:
   SET CURRENT PRECISION = 'D31.3';