求幂运算符

77 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第45天,点击查看活动详情

求幂运算符(**)

  • 0 ** 00的零幂等于0。但是,操作数是IEEE双精度数(例如,0 ** $DOUBLE(0)$DOUBLE(0) ** 0),则零的零幂为1
	w 0 ** 0,!
	w 0 ** $double(0),!
  • 0 ** n0的任意正数n的幂是0。这包括0 ** $DOUBLE("INF")。将0取负数的幂会导致错误:负数会生成<ILLEGAL VALUE>错误;$double负数会生成<Divide>错误。
	w 0 ** 1,!
	w 0 ** -1,!
	w 0 ** $double("INF"),!
	w 0 ** $double(-1),!
  • Num ** 0:任何非零数(正数或负数)的零幂都是1。这包括$DOUBLE("INF") ** 0
	w 1 ** 0,!
	w $double("INF") ** 0
  • 1 ** n1的任意数字的幂(正、负或零)是1
    w 1 ** -1
    w 1 ** 1
    w 1 ** 0
  • -num ** .N:将负数提高到小数的幂会导致<ILLEGAL VALUE>错误。
    w -1 ** 0.5
  • $DOUBLE("INF") ** n:无穷大数字(正数或负数)的0次方是1。无限大(正数或负数)与任何正数(整数、小数或INF)的幂都是INF。无限数(正数或负数)与任何负数(整数、小数或INF)的幂均为0
	w $double("INF") ** 2,!
	w $double("INF") ** 0,!
	w $double("INF") ** -2,!
  • $DOUBLE("NaN"):求幂运算符两侧的NaN始终返NaN,而不考虑另一个操作数的值。
	w $double("NaN") ** 2,!
	w 2 ** $double("NaN"),!
  • Num ** nnn:大于1且具有较大正指数值的正数或负数(如9 ** 153-9.2 ** 152)会生成<MAXNUMBER>错误。
	w 9 ** 152,!
	w 9 ** 153,!
	w -9.2 ** 151,!
	w -9.2 ** 152,!
  • Num ** -nnn:大于1且具有较大负指数值的正数或负数(如9 ** -135-9.2 ** -134)返回0。
	w 9 ** -134,!
	w 9 ** -135,!
	w -9.2 ** -133,!
	w -9.2 ** -134,!
  • .num ** nnn:小于1且具有较大正指数值(例如.22 ** 196-.2 ** 184)的正数或负数返回0。
	w .22 ** 195,!
	w .22 ** 196,!
	w -.2 ** 183,!
	w -.2 ** 184,!
  • .Num ** -nnn:小于1且具有较大负指数值的正数或负数(如.22 ** -196-.2 ** -184)会生成<MAXNUMBER>错误。
	w .22 ** -196,!
	w -.2 ** -184,!

注意:对同一次连续开方,会出现以下错误。

	w 16 ** 0.5 ** 0.5,!
	w 16 ** 0.25,!
1.999999999999999883
2
  • 可以使用zpower函数来代替**
    w $zpower(2, 2)
    w $zpower(2, -2)
    w $zpower(2, -1)

整数除法运算符(\)

  • 整数除法运算符产生左操作数除以右操作数的整数结果。它不返回余数,也不四舍五入结果。
	w "355 \ 113 = ", 355 \ 113,!
	w "355 / 113 = ", 355 / 113,!

取余数(#

  • 模运算符在两个数值解释的操作数上产生算术模运算符的值。当两个操作数为正时,模运算是左操作数整数除以右操作数的余数。
  • 有两种类型的关系运算符:字符串关系运算符和数值关系运算符。
	w "37 # 10 = ",37 # 10,! 
	w "12.5 # 3.2 = ",12.5 # 3.2,!