精确处理十进制数字
Db2 接受两组规则来确定十进制数字运算结果的精确度和范围。
- DEC15 规则允许运算结果最多精确到15位。 DEC15 当两个操作数的精度均为15或更小时,或者除非适用 规则,否则规则生效。 DEC31
- DEC31 规则允许结果最多精确到31位数字。 DEC31 如果符合以下条件,则规则生效:
- 运算的任一操作数精度大于15位。
- 操作在动态 SQL 语句中执行,且满足以下任意条件:
- 特殊寄存器“当前精度”的当前值为 DEC31 或 D31.s ,其中 s 是1-9之间的数字,表示用于除法运算的最小刻度。
- 面板 DSNTIP4 上 DECIMAL ARITHMETIC 的安装选项为 DEC31、 31 或 D31. s ,其中 s 是 1-9 范围内的数字;面板 DSNTIP4 上 USE FOR DYNAMICRULES 的安装选项为 YES;并且应用程序尚未设置 CURRENT PRECISION 的值。
- SQL语句具有绑定、定义或调用行为;该语句位于使用选项DEC(31)预编译的应用程序中;面板上用于动态规则的安装选项 DSNTIP4 为NO;应用程序未设置CURRENT PRECISION的值。 请参阅动态SQL语句的动态规则选项 ,了解绑定、定义和调用行为的说明。
- 该操作位于一个嵌入(静态)SQL语句中,您可以通过DEC(31)、 DEC31 或 D31.s 选项进行预编译,或者当安装选项DECIMAL ARITHMETIC为 DEC31 或31时,使用该选项的默认值。s 是一个介于1到9之间的数字,表示用于除法运算的最小刻度。 请参阅 “处理SQL语句以进行程序准备 ”,了解有关预编译的信息以及所有预编译器选项的列表。
建议 :为减少溢出的可能性,或者当处理精度大于15位数字时,请选择 DEC31 或 D31.s , 其中wheres是 1-9之间的数字,表示用于除法运算的最小刻度。