role Numeric { ... }

数字和可以作为数字的类型的通用角色。

二进制数字运算返回“更宽”类型的对象

Int         narrowest
Rat
FatRat
Num
Complex     widest

例如,RatInt 的乘积是 Rat

在纯数学中通常返回无理数的一元运算通常在 Raku 中返回 Num

方法§

方法 Numeric§

multi method Numeric(Numeric:D: --> Numeric:D)
multi method Numeric(Numeric:U: --> Numeric:D)

:D 变体仅返回调用者。:U 变体发出有关在数字上下文中使用未初始化值并返回 self.new 的警告。

方法 narrow§

method narrow(Numeric:D --> Numeric:D)

返回转换为最窄类型的数字,该类型可以在不损失精度的情况下容纳它。

say (4.0 + 0i).narrow.raku;     # OUTPUT: «4␤» 
say (4.0 + 0i).narrow.^name;    # OUTPUT: «Int␤»

方法 ACCEPTS§

multi method ACCEPTS(Numeric:D: $other)

如果 $other 可以强制转换为 Numeric 并且在数值上等于调用者(或两者都计算为 NaN),则返回 True

例程 log§

multi        log(Numeric:DNumeric $base = e --> Numeric:D)
multi method log(Numeric:D: Numeric $base = e --> Numeric:D)

计算以 $base 为底的对数。默认为自然对数。如果 $base1,则抛出异常。

对于负参数返回 NaN。从 6.e 语言版本开始(早期实现存在于 Rakudo 编译器 2023.02+ 中),将为负参数返回 Complex 值。

例程 log10§

multi        log10(Numeric:D  --> Numeric:D)
multi method log10(Numeric:D: --> Numeric:D)

计算以 10 为底的对数。对于 0,返回 -Inf

对于负参数返回 NaN。从 6.e 语言版本开始(早期实现存在于 Rakudo 编译器 2023.02+ 中),将为负参数返回 Complex 值。

例程 log2§

multi        log2(Numeric:D)
multi method log2(Numeric:D:)

计算以 2 为底的对数。对于 0,返回 -Inf

对于负参数返回 NaN。从 6.e 语言版本开始(早期实现存在于 Rakudo 编译器 2023.02+ 中),将为负参数返回 Complex 值。

例程 exp§

multi        exp(Numeric:DNumeric:D $base = e --> Numeric:D)
multi method exp(Numeric:D: Numeric:D $base = e --> Numeric:D)

返回 $base 乘以数字的幂,如果在没有第二个参数的情况下调用,则返回 e 乘以数字的幂。

方法 roots§

multi method roots(Numeric:D: Int:D $n --> Positional)

返回 $n 个复数根的列表,当提升到 $n 次方时,这些根计算为原始数字。

例程 abs§

multi        abs(Numeric:D  --> Real:D)
multi method abs(Numeric:D: --> Real:D)

返回数字的绝对值。

例程 sqrt§

multi        sqrt(Numeric:D --> Numeric:D)
multi method sqrt(Numeric:D --> Numeric:D)

返回该数字的平方根。对于实数,返回正平方根。

对于负实数,sqrt 返回 NaN 而不是复数,以免混淆不熟悉复数运算的人。如果您想计算复数平方根,请先强制转换为 Complex,或使用 roots 方法。

从 6.e 语言版本开始(Rakudo 编译器 2023.02+ 中存在早期实现),为负参数返回 Complex 值。

方法 conj§

multi method conj(Numeric:D --> Numeric:D)

返回该数字的复共轭。对于实数,返回该数字本身。

方法 Bool§

multi method Bool(Numeric:D:)

如果该数字等于零,则返回 False,否则返回 True

方法 succ§

method succ(Numeric:D:)

返回增加 1 的数字(后继)。

方法 pred§

method pred(Numeric:D:)

返回减少 1 的数字(前驱)。

类型图§

Numeric 的类型关系
raku-type-graph Numeric Numeric Real Real Real->Numeric Mu Mu Any Any Any->Mu Cool Cool Cool->Any Complex Complex Complex->Numeric Complex->Cool Stringy Stringy Str Str Str->Cool Str->Stringy Allomorph Allomorph Allomorph->Str ComplexStr ComplexStr ComplexStr->Complex ComplexStr->Allomorph Num Num Num->Real Num->Cool Instant Instant Instant->Real Instant->Cool Duration Duration Duration->Real Duration->Cool Rational Rational Rational->Real Int Int Int->Real Int->Cool NumStr NumStr NumStr->Allomorph NumStr->Num atomicint atomicint atomicint->Int Bool Bool Bool->Int IntStr IntStr IntStr->Allomorph IntStr->Int Order Order Order->Int Signal Signal Signal->Int int int int->Int Endian Endian Endian->Int PromiseStatus PromiseStatus PromiseStatus->Int FatRat FatRat FatRat->Cool FatRat->Rational Rat Rat Rat->Cool Rat->Rational

展开上面的图表