强基初中数学&学Python——第211课 数字和数学模块之三:decimal模块(4)——Decimal对象方法之二

next_minus(context=None)  如果输入上下文参数(context),则运算上下文采用这个参数,否则采用运行环境上下文;方法返回该数的左靠近数——小于该操作数并符合上下文规定的最大数字。

 

next_plus(context=None)  与next_minus()相似,返回右靠近值。

 

next_toward(other, context=None)  如果两运算数不相等,返回在第二个操作数的方向上最接近第一个操作数的数。如果两操作数数值上相等,返回将符号设置为与第二个运算数相同的第一个运算数的拷贝。

 

normalize(context=None)  标准化数字。通过去除尾随的零,并将所有结果等于Decimal('0')或Decimal('-0') 的分别转化为Decimal('0')或Decimal('-0') 。用于为一类等值的数生成同样的规范表示。比如, Decimal('32.100') 和 Decimal('0.321000e+2') 都被标准化为相同的值 Decimal('32.1')。

 

number_class(context=None)  返回操作数的类别,是以下十个字符串中的一个:"-Infinity" ,指示运算数为负无穷大。"-Normal" ,指示该运算数是负正常数字。"-Subnormal" ,指示该运算数是负的次标准数。"-Zero" ,指示该运算数是负零。"+Zero" ,指示该运算数是正零。"+Subnormal" ,指示该运算数是正的次标准数。"+Normal" ,指示该运算数是正的标准数。"+Infinity" ,指示该运算数是正无穷。"NaN" ,指示该运算数是肃静 NaN (非数字)。"sNaN" ,指示该运算数是信号 NaN 。

 

quantize(exp, rounding=None, context=None)  把第二个操作数(exp)通过小数点移位变成等值的整数和指数(左移一位指数加1,右移一位指数减1),然后也通过小数点移位的方式,使第一个操作数(对象本身)的指数与移位后的第二个操作数的指数相同,然后按rounding参数或上下文的舍入模式去除小数点后的数字即得结果。如果第一操作数的小数点右移位时,位数不够则补0。  1:精确数1.41421356×10^2进行1.000×10^-1的quantize运算,首先把1.000×10^-1中系数的小数点等值后移3位变成1000×10^-4,然后把1.41421356×10^2等值变换为指数是-4的数,即右移6位变成1414213.56×10^-4,最后把系数四舍五入为整数即1414214×10^-4,用纯小数表示就是141.4214。
  2:精确数1.41421356×10^2进行1.000×10^7的quantize运算,首先把1.000×10^7中系数的小数点等值后移3位变成1000×10^4,然后把1.41421356×10^2等值变换为指数是4的数,即左移2位变成0.0141421356×10^4,最后把系数四舍五入为整数即0×10^4。  3:精确数1.41421356×10^2进行1.000×10^-9的quantize运算,首先把1.000×10^-9中系数的小数点等值后移3位变成1000×10^-12,然后把1.41421356×10^2等值变换为指数是-12的数,即右移14位变成141421356000000×10^-12,无需舍入操作,用纯小数表示就是141.421356000000。  第四个参数由于可以限制有效数字的多少,可能会与quantize运算有冲突。与其他运算不同,如果按要求舍入后系数的有效数字超过上下文的限制,就会发出一个 InvalidOperation信号。  第三个操作数是舍入方式。如果两个操作数等值移位后,第一个操作数还有小数位,就需要舍入操作。在这种情况下,舍入模式由给定 rounding 参数决定,其余的由给定 context 参数决定;如果参数都未给定,使用当前线程上下文的舍入模式。  每当结果的指数大于 Emax 或小于 Emin 就会返回错误。