Numbers

Standard Numeric Types

BaseNumberのすべてのサブタイプの型ツリーは以下のようになります。抽象型はマークされており、残りは具体的な型です。

Number  (Abstract Type)
├─ Complex
└─ Real  (Abstract Type)
   ├─ AbstractFloat  (Abstract Type)
   │  ├─ Float16
   │  ├─ Float32
   │  ├─ Float64
   │  └─ BigFloat
   ├─ Integer  (Abstract Type)
   │  ├─ Bool
   │  ├─ Signed  (Abstract Type)
   │  │  ├─ Int8
   │  │  ├─ Int16
   │  │  ├─ Int32
   │  │  ├─ Int64
   │  │  ├─ Int128
   │  │  └─ BigInt
   │  └─ Unsigned  (Abstract Type)
   │     ├─ UInt8
   │     ├─ UInt16
   │     ├─ UInt32
   │     ├─ UInt64
   │     └─ UInt128
   ├─ Rational
   └─ AbstractIrrational  (Abstract Type)
      └─ Irrational

Abstract number types

Core.NumberType

すべての数値型のための抽象スーパタイプ。

source
Core.RealType
Real <: Number

すべての実数のための抽象スーパタイプ。

source
Core.AbstractFloatType
AbstractFloat <: Real

すべての浮動小数点数のための抽象スーパタイプ。

source
Core.IntegerType
Integer <: Real

すべての整数の抽象スーパタイプ(例:SignedUnsigned、およびBool)。

また、isintegertruncdivも参照してください。

julia> 42 isa Integer
true

julia> 1.0 isa Integer
false

julia> isinteger(1.0)
true
source
Core.SignedType
Signed <: Integer

すべての符号付き整数の抽象スーパタイプです。

source
Core.UnsignedType
Unsigned <: Integer

すべての符号なし整数のための抽象スーパタイプです。

組み込みの符号なし整数は16進数で表示され、接頭辞 0x が付いており、同じ方法で入力できます。

julia> typemax(UInt8)
0xff

julia> Int(0x00d)
13

julia> unsigned(true)
0x0000000000000001
source
Base.AbstractIrrationalType
AbstractIrrational <: Real

正確な無理数値を表す数値型であり、他の数値量との算術演算において自動的に正しい精度に丸められます。

サブタイプ MyIrrational <: AbstractIrrational は、少なくとも ==(::MyIrrational, ::MyIrrational)hash(x::MyIrrational, h::UInt)、および convert(::Type{F}, x::MyIrrational) where {F <: Union{BigFloat,Float32,Float64}} を実装する必要があります。

サブタイプが時折有理数を表すために使用される場合(例えば、整数 n に対して √n を表す平方根型は、n が完全平方数のときに有理数の結果を返します)、その場合は isintegeriszeroisone、および ==Real 値とともに実装する必要があります(これらはすべて AbstractIrrational 型に対してデフォルトで false になります)。さらに、hash を対応する Rational と等しく定義する必要があります。

source

Concrete number types

Core.Float16Type
Float16 <: AbstractFloat <: Real

16ビット浮動小数点数型(IEEE 754標準)。バイナリ形式は1ビットの符号、5ビットの指数、10ビットの仮数です。

source
Core.Float32Type
Float32 <: AbstractFloat <: Real

32ビット浮動小数点数型(IEEE 754標準)。バイナリ形式は1ビットの符号、8ビットの指数、23ビットの仮数です。

科学的表記の指数は小文字のfで入力する必要があります。したがって、2f3 === 2.0f0 * 10^3 === Float32(2_000)となります。配列リテラルや内包表記では、要素の型を角括弧の前に指定できます:Float32[1,4,9] == Float32[i^2 for i in 1:3]

関連情報としては、Inf32NaN32Float16exponentfrexpがあります。

source
Core.Float64Type
Float64 <: AbstractFloat <: Real

64ビット浮動小数点数型(IEEE 754標準)。バイナリ形式は1ビットの符号、11ビットの指数、52ビットの小数部です。さまざまなビットにアクセスするには、bitstringsignbitexponentfrexp、およびsignificandを参照してください。

これは浮動小数点リテラルのデフォルトであり、1.0 isa Float64、および1/2, 2pi, log(2), range(0,90,length=4)などの多くの操作に使用されます。整数とは異なり、このデフォルトはSys.WORD_SIZEによって変更されません。

科学的表記の指数はeまたはEとして入力できます。したがって、2e3 === 2.0E3 === 2.0 * 10^3です。この方法は、整数がオーバーフローするため、10^nよりも強く推奨されます。したがって、2.0 * 10^19 < 0ですが、2e19 > 0です。

また、InfNaNfloatmaxFloat32Complexも参照してください。

source
Core.BoolType
Bool <: Integer

ブール型で、値は truefalse です。

Bool は数の一種です:false は数値的に 0 と等しく、true は数値的に 1 と等しいです。さらに、falseNaNInf に対して乗法的な「強いゼロ」として機能します:

julia> [true, false] == [1, 0]
true

julia> 42.0 + true
43.0

julia> 0 .* (NaN, Inf, -Inf)
(NaN, NaN, NaN)

julia> false .* (NaN, Inf, -Inf)
(0.0, 0.0, -0.0)

if やその他の条件文は Bool のみを受け入れます。Julia には「真」と見なされる値は存在しません。

比較は通常 Bool を返し、ブロードキャストされた比較は Array{Bool} の代わりに BitArray を返すことがあります。

julia> [1 2 3 4 5] .< pi
1×5 BitMatrix:
 1  1  1  0  0

julia> map(>(pi), [1 2 3 4 5])
1×5 Matrix{Bool}:
 0  0  0  1  1

他に truesfalsesifelse も参照してください。

source
Core.Int8Type
Int8 <: Signed <: Integer

8ビット符号付き整数型。

n ∈ -128:127 の数を表します。このような整数は警告なしにオーバーフローするため、typemax(Int8) + Int8(1) < 0 となります。

関連情報として IntwidenBigInt を参照してください。

source
Core.UInt8Type
UInt8 <: Unsigned <: Integer

8ビット符号なし整数型。

16進数で表示されるため、0x07 == 7。

source
Core.Int16Type
Int16 <: Signed <: Integer

16ビット符号付き整数型。

n ∈ -32768:32767 の数を表します。このような整数は警告なしにオーバーフローするため、typemax(Int16) + Int16(1) < 0 となります。

関連情報として IntwidenBigInt を参照してください。

source
Core.UInt16Type
UInt16 <: Unsigned <: Integer

16ビット符号なし整数型。

16進数で表示されるため、0x000f == 15。

source
Core.Int32Type
Int32 <: Signed <: Integer

32ビット符号付き整数型。

このような整数は警告なしにオーバーフローするため、typemax(Int32) + Int32(1) < 0 となります。

関連情報としては IntwidenBigInt があります。

source
Core.UInt32Type
UInt32 <: Unsigned <: Integer

32ビット符号なし整数型。

16進数で表示されるため、0x0000001f == 31。

source
Core.Int64Type
Int64 <: Signed <: Integer

64ビット符号付き整数型。

このような整数は警告なしにオーバーフローするため、typemax(Int64) + Int64(1) < 0 となります。

関連情報としては IntwidenBigInt があります。

source
Core.UInt64Type
UInt64 <: Unsigned <: Integer

64ビット符号なし整数型。

16進数で表示されるため、0x000000000000003f == 63。

source
Core.Int128Type
Int128 <: Signed <: Integer

128ビット符号付き整数型。

このような整数は警告なしにオーバーフローするため、typemax(Int128) + Int128(1) < 0 となります。

さらに IntwidenBigInt も参照してください。

source
Core.UInt128Type
UInt128 <: Unsigned <: Integer

128ビット符号なし整数型。

16進数で表示されるため、0x0000000000000000000000000000007f == 127。

source
Core.IntType
Int

Sys.WORD_SIZEビット符号付き整数型、Int <: Signed <: Integer <: Real

これはほとんどの整数リテラルのデフォルト型であり、Sys.WORD_SIZEに応じてInt32またはInt64のエイリアスです。これはlengthのような関数が返す型であり、配列のインデックス付けの標準型です。

整数は警告なしにオーバーフローするため、typemax(Int) + 1 < 0および10^19 < 0となります。オーバーフローはBigIntを使用することで回避できます。非常に大きな整数リテラルは、たとえば10_000_000_000_000_000_000 isa Int128のように、より広い型を使用します。

整数除算はdivエイリアス÷であり、整数に対して作用する/Float64を返します。

他にInt64widentypemaxbitstringも参照してください。

source
Core.UIntType
UInt

Sys.WORD_SIZEビットの符号なし整数型、UInt <: Unsigned <: Integer

Intと同様に、エイリアスUIntは、特定のコンピュータのSys.WORD_SIZEの値に応じて、UInt32またはUInt64のいずれかを指すことがあります。

16進数で表示および解析されます:UInt(15) === 0x000000000000000f

source
Base.ComplexType
Complex{T<:Real} <: Number

実数および虚数部分の型が T の複素数型。

ComplexF16ComplexF32 および ComplexF64 はそれぞれ Complex{Float16}Complex{Float32} および Complex{Float64} のエイリアスです。

参照: Realcomplexreal

source
Base.RationalType
Rational{T<:Integer} <: Real

有理数型で、分子と分母の型は T です。有理数はオーバーフローがチェックされます。

source
Base.IrrationalType
Irrational{sym} <: AbstractIrrational

記号 sym で表される正確な無理数値を表す数値型で、例えば π および γ などがあります。

また、AbstractIrrational も参照してください。

source

Data Formats

Base.digitsFunction
digits([T<:Integer], n::Integer; base::T = 10, pad::Integer = 1)

指定された基数での n の桁を持つ要素型 T(デフォルトは Int)の配列を返します。オプションで、指定されたサイズにゼロでパディングすることができます。より重要な桁は高いインデックスにあり、n == sum(digits[k]*base^(k-1) for k in eachindex(digits)) となります。

他にも ndigitsdigits!、および基数 2 の場合は bitstringcount_ones も参照してください。

julia> digits(10)
2-element Vector{Int64}:
 0
 1

julia> digits(10, base = 2)
4-element Vector{Int64}:
 0
 1
 0
 1

julia> digits(-256, base = 10, pad = 5)
5-element Vector{Int64}:
 -6
 -5
 -2
  0
  0

julia> n = rand(-999:999);

julia> n == evalpoly(13, digits(n, base = 13))
true
source
Base.digits!Function
digits!(array, n::Integer; base::Integer = 10)

指定された基数で n の桁を配列に埋めます。より重要な桁は高いインデックスにあります。配列の長さが不十分な場合、最も重要でない桁が配列の長さまで埋められます。配列の長さが過剰な場合、余分な部分はゼロで埋められます。

julia> digits!([2, 2, 2, 2], 10, base = 2)
4-element Vector{Int64}:
 0
 1
 0
 1

julia> digits!([2, 2, 2, 2, 2, 2], 10, base = 2)
6-element Vector{Int64}:
 0
 1
 0
 1
 0
 0
source
Base.bitstringFunction
bitstring(n)

原始型のリテラルビット表現を示す文字列です。

関連項目としては count_ones, count_zeros, digits があります。

julia> bitstring(Int32(4))
"00000000000000000000000000000100"

julia> bitstring(2.2)
"0100000000000001100110011001100110011001100110011001100110011010"
source
Base.parseFunction
parse(::Type{SimpleColor}, rgb::String)

tryparse(SimpleColor, rgb::String)の類似で、nothingを返す代わりにエラーを発生させます。

source
parse(::Type{Platform}, triplet::AbstractString)

文字列プラットフォームトリプレットを Platform オブジェクトに戻します。

source
parse(type, str; base)

文字列を数値として解析します。Integer 型の場合、基数を指定できます(デフォルトは 10 です)。浮動小数点型の場合、文字列は10進浮動小数点数として解析されます。Complex 型は、形式 "R±Iim" の10進文字列から Complex(R,I) の要求された型として解析されます; "i" または "j""im" の代わりに使用でき、 "R" または "Iim" も許可されます。文字列が有効な数値を含まない場合、エラーが発生します。

Julia 1.1

parse(Bool, str) は少なくとも Julia 1.1 が必要です。

julia> parse(Int, "1234")
1234

julia> parse(Int, "1234", base = 5)
194

julia> parse(Int, "afc", base = 16)
2812

julia> parse(Float64, "1.2e-3")
0.0012

julia> parse(Complex{Float64}, "3.2e-1 + 4.5im")
0.32 + 4.5im
source
Base.tryparseFunction
tryparse(::Type{SimpleColor}, rgb::String)

rgbSimpleColorとして解析しようとします。rgb#で始まり、長さが7の場合、RGBTupleに基づくSimpleColorに変換されます。rgba-zで始まる場合、rgbは色名として解釈され、Symbolに基づくSimpleColorに変換されます。

それ以外の場合は、nothingが返されます。

julia> tryparse(SimpleColor, "blue")
SimpleColor(blue)

julia> tryparse(SimpleColor, "#9558b2")
SimpleColor(#9558b2)

julia> tryparse(SimpleColor, "#nocolor")
source
tryparse(type, str; base)

parseと同様ですが、要求された型の値を返すか、文字列が有効な数値を含まない場合はnothingを返します。

source
Base.bigFunction
big(x)

数値を最大精度の表現に変換します(通常は BigInt または BigFloat)。浮動小数点数に関するいくつかの落とし穴については、BigFloat を参照してください。

source
Base.signedFunction
signed(T::Integer)

整数のビット型を同じサイズの符号付き型に変換します。

julia> signed(UInt16)
Int16
julia> signed(UInt64)
Int64
source
signed(x)

数値を符号付き整数に変換します。引数が符号なしの場合、オーバーフローをチェックせずに符号付きとして再解釈されます。

関連項目: unsigned, sign, signbit.

source
Base.unsignedFunction
unsigned(T::Integer)

整数ビット型を同じサイズの符号なし型に変換します。

julia> unsigned(Int16)
UInt16
julia> unsigned(UInt64)
UInt64
source
Base.floatMethod
float(x)

数値または配列を浮動小数点データ型に変換します。

参照: complex, oftype, convert.

julia> float(1:1000)
1.0:1.0:1000.0

julia> float(typemax(Int32))
2.147483647e9
source
Base.Math.significandFunction
significand(x)

浮動小数点数の仮数(別名:マンティッサ)を抽出します。x が非ゼロの有限数である場合、結果は x と同じ型と符号の数になり、その絶対値は区間 $[1,2)$ にあります。それ以外の場合は x が返されます。

関連情報として frexpexponent も参照してください。

julia> significand(15.2)
1.9

julia> significand(-15.2)
-1.9

julia> significand(-15.2) * 2^3
-15.2

julia> significand(-Inf), significand(Inf), significand(NaN)
(-Inf, Inf, NaN)
source
Base.Math.exponentFunction
exponent(x::Real) -> Int

2^y ≤ abs(x) を満たす最大の整数 y を返します。

x がゼロ、無限大、または NaN の場合、DomainError をスローします。他のすべての非非正規浮動小数点数 x に対して、これは x の指数ビットに対応します。

他にも signbitsignificandfrexpissubnormallog2ldexp を参照してください。

julia> exponent(8)
3

julia> exponent(6.5)
2

julia> exponent(-1//4)
-2

julia> exponent(3.142e-4)
-12

julia> exponent(floatmin(Float32)), exponent(nextfloat(0.0f0))
(-126, -149)

julia> exponent(0.0)
ERROR: DomainError with 0.0:
Cannot be ±0.0.
[...]
source
Base.complexMethod
complex(r, [i])

実数または配列を複素数に変換します。iはデフォルトでゼロです。

julia> complex(7)
7 + 0im

julia> complex([1, 2, 3])
3-element Vector{Complex{Int64}}:
 1 + 0im
 2 + 0im
 3 + 0im
source
Base.bswapFunction
bswap(n)

nのバイト順序を逆にします。

(現在のネイティブバイト順序とビッグエンディアン順序の間で変換するには、ntohおよびhtonも参照してください。)

julia> a = bswap(0x10203040)
0x40302010

julia> bswap(a)
0x10203040

julia> string(1, base = 2)
"1"

julia> string(bswap(1), base = 2)
"100000000000000000000000000000000000000000000000000000000"
source
Base.hex2bytesFunction
hex2bytes(itr)

与えられたイテラブル itr は、16進数の数字のシーケンスに対するASCIIコードの列であり、バイナリ表現に対応する Vector{UInt8} のバイトを返します:itr の各連続する2桁の16進数が、返されるベクターの1バイトの値を与えます。

itr の長さは偶数でなければならず、返される配列の長さは itr の半分になります。インプレースバージョンの hex2bytes! や、逆の bytes2hex も参照してください。

Julia 1.7

UInt8 値を生成するイテレータで hex2bytes を呼び出すには、Julia 1.7 以降が必要です。以前のバージョンでは、hex2bytes を呼び出す前にイテレータを collect することができます。

julia> s = string(12345, base = 16)
"3039"

julia> hex2bytes(s)
2-element Vector{UInt8}:
 0x30
 0x39

julia> a = b"01abEF"
6-element Base.CodeUnits{UInt8, String}:
 0x30
 0x31
 0x61
 0x62
 0x45
 0x46

julia> hex2bytes(a)
3-element Vector{UInt8}:
 0x01
 0xab
 0xef
source
Base.hex2bytes!Function
hex2bytes!(dest::AbstractVector{UInt8}, itr)

イテラブルな itr を、16進数文字列を表すバイトからそのバイナリ表現に変換します。これは hex2bytes に似ていますが、出力は dest にインプレースで書き込まれます。dest の長さは itr の長さの半分でなければなりません。

Julia 1.7

UInt8 を生成するイテレータで hex2bytes! を呼び出すには、バージョン 1.7 が必要です。以前のバージョンでは、呼び出す前にイテラブルを収集することができます。

source
Base.bytes2hexFunction
bytes2hex(itr) -> String
bytes2hex(io::IO, itr)

イテレータ itr のバイトをその16進数文字列表現に変換します。bytes2hex(itr) を介して String を返すか、bytes2hex(io, itr) を介して文字列を io ストリームに書き込みます。16進数の文字はすべて小文字です。

Julia 1.7

任意のイテレータが UInt8 値を生成する bytes2hex を呼び出すには、Julia 1.7 以降が必要です。以前のバージョンでは、bytes2hex を呼び出す前にイテレータを collect できます。

julia> a = string(12345, base = 16)
"3039"

julia> b = hex2bytes(a)
2-element Vector{UInt8}:
 0x30
 0x39

julia> bytes2hex(b)
"3039"
source

General Number Functions and Constants

Base.oneFunction
one(x)
one(T::type)

xの乗法単位元を返します:one(x)*x == x*one(x) == xとなる値です。代わりに、one(T)は型Tを受け取り、その場合oneは型Tの任意のxの乗法単位元を返します。

可能であれば、one(x)xと同じ型の値を返し、one(T)は型Tの値を返します。ただし、乗法単位元は次元を持たない必要があるため、次元を持つ量(例:日数の時間)を表す型の場合、これは当てはまらないかもしれません。その場合、one(x)xと同じ精度(および形状、行列の場合)を持つ単位元の値を返すべきです。

次元を持つ場合でも、xと同じ型の量、または型Tの量が必要な場合は、代わりにoneunitを使用してください。

また、単位行列のためのidentity関数や、LinearAlgebraIも参照してください。

julia> one(3.7)
1.0

julia> one(Int)
1

julia> import Dates; one(Dates.Day(1))
1
source
Base.oneunitFunction
oneunit(x::T)
oneunit(T::Type)

引数の型が T であるか、(型が渡された場合は)引数そのものである T(one(x)) を返します。これは次元を持つ量に対する one とは異なります:one は次元を持たない(乗法的単位)ですが、oneunit は次元を持ちます(x と同じ型、または型 T の)。

julia> oneunit(3.7)
1.0

julia> import Dates; oneunit(Dates.Day)
1 day
source
Base.zeroFunction
zero(x)
zero(::Type)

xの型に対する加法単位元を取得します(xは型自体を指定することもできます)。

関連項目としては、iszerooneoneunitoftypeがあります。

julia> zero(1)
0

julia> zero(big"2.0")
0.0

julia> zero(rand(2,2))
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0
source
Base.MathConstants.piConstant
π
pi

定数 pi。

Unicode π は、Julia REPL で \pi と書いてタブを押すことで入力でき、多くのエディタでも同様です。

参照: sinpi, sincospi, deg2rad

julia> pi
π = 3.1415926535897...

julia> 1/2pi
0.15915494309189535
source
Base.MathConstants.ℯConstant
ℯ
e

定数 ℯ。

Unicode は、Julia REPL で \euler と入力してタブを押すことで、また多くのエディタで入力できます。

参照: exp, cis, cispi

julia> ℯ
ℯ = 2.7182818284590...

julia> log(ℯ)
1

julia> ℯ^(im)π ≈ -1
true
source
Base.MathConstants.catalanConstant
カタラン数

# 例

jldoctest julia> Base.MathConstants.catalan catalan = 0.9159655941772...

julia> sum(log(x)/(1+x^2) for x in 1:0.01:10^6) * 0.01 0.9159466120554123 ```

source
Base.MathConstants.eulergammaConstant
γ
eulergamma

オイラー定数。

julia> Base.MathConstants.eulergamma
γ = 0.5772156649015...

julia> dx = 10^-6;

julia> sum(-exp(-x) * log(x) for x in dx:dx:100) * dx
0.5772078382499133
source
Base.MathConstants.goldenConstant
φ
黄金比

黄金比。

julia> Base.MathConstants.golden
φ = 1.6180339887498...

julia> (2ans - 1)^2 ≈ 5
true
source
Base.NaNConstant
NaN, NaN64

Float64 型の非数値(not-a-number)値です。

関連情報: isnan, missing, NaN32, Inf

julia> 0/0
NaN

julia> Inf - Inf
NaN

julia> NaN == NaN, isequal(NaN, NaN), isnan(NaN)
(false, true, true)

!!! 注 NaN をチェックする際は、必ず isnan または isequal を使用してください。x === NaN を使用すると予期しない結果が得られることがあります:

```julia-repl
julia> reinterpret(UInt32, NaN32)
0x7fc00000

julia> NaN32p1 = reinterpret(Float32, 0x7fc00001)
NaN32

julia> NaN32p1 === NaN32, isequal(NaN32p1, NaN32), isnan(NaN32p1)
(false, true, true)
```
source
Base.NaN64Constant
NaN, NaN64

Float64 型の非数値(not-a-number)値です。

関連情報: isnan, missing, NaN32, Inf

julia> 0/0
NaN

julia> Inf - Inf
NaN

julia> NaN == NaN, isequal(NaN, NaN), isnan(NaN)
(false, true, true)

!!! 注 NaN をチェックする際は、必ず isnan または isequal を使用してください。x === NaN を使用すると予期しない結果が得られることがあります:

```julia-repl
julia> reinterpret(UInt32, NaN32)
0x7fc00000

julia> NaN32p1 = reinterpret(Float32, 0x7fc00001)
NaN32

julia> NaN32p1 === NaN32, isequal(NaN32p1, NaN32), isnan(NaN32p1)
(false, true, true)
```
source
Base.issubnormalFunction
issubnormal(f) -> Bool

浮動小数点数が非正規化であるかどうかをテストします。

IEEE浮動小数点数は、指数ビットがゼロで、仮数がゼロでない場合に非正規化と呼ばれます。

julia> floatmin(Float32)
1.1754944f-38

julia> issubnormal(1.0f-37)
false

julia> issubnormal(1.0f-38)
true
source
Base.isfiniteFunction
isfinite(f) -> Bool

数が有限であるかどうかをテストします。

julia> isfinite(5)
true

julia> isfinite(NaN32)
false
source
Base.iszeroFunction
iszero(x)

x == zero(x) の場合は true を返します。x が配列の場合、これは x のすべての要素がゼロであるかどうかをチェックします。

関連項目: isone, isinteger, isfinite, isnan

julia> iszero(0.0)
true

julia> iszero([1, 9, 0])
false

julia> iszero([false, 0, 0])
true
source
Base.isoneFunction
isone(x)

xone(x) と等しい場合は true を返します。x が配列の場合、これは x が単位行列であるかどうかをチェックします。

julia> isone(1.0)
true

julia> isone([1 0; 0 2])
false

julia> isone([1 0; 0 true])
true
source
Base.nextfloatFunction
nextfloat(x::AbstractFloat, n::Integer)

n 回の nextfloatx に適用した結果(n >= 0 の場合)、または -n 回の prevfloat の適用結果(n < 0 の場合)。

source
nextfloat(x::AbstractFloat)

同じ型の最小の浮動小数点数 y を返します。条件は x < y です。もしそのような y が存在しない場合(例えば、xInf または NaN の場合)、x を返します。

関連情報: prevfloat, eps, issubnormal.

source
Base.prevfloatFunction
prevfloat(x::AbstractFloat, n::Integer)

n 回の prevfloatx に適用した結果(n >= 0 の場合)または -n 回の nextfloat の適用結果(n < 0 の場合)。

source
prevfloat(x::AbstractFloat)

同じ型の最大の浮動小数点数 y を返します。条件は y < x です。もしそのような y が存在しない場合(例えば x-Inf または NaN の場合)、x を返します。

source
Base.isintegerFunction
isinteger(x) -> Bool

xが数値的に整数と等しいかどうかをテストします。

julia> isinteger(4.0)
true
source
Base.isrealFunction
isreal(x) -> Bool

x またはそのすべての要素が無限大やNaNを含む実数に数値的に等しいかどうかをテストします。isreal(x)isequal(x, real(x)) が真である場合に真です。

julia> isreal(5.)
true

julia> isreal(1 - 3im)
false

julia> isreal(Inf + 0im)
true

julia> isreal([4.; complex(0,1)])
false
source
Core.Float32Method
Float32(x [, mode::RoundingMode])

xからFloat32を作成します。xが正確に表現できない場合、modexの丸め方を決定します。

julia> Float32(1/3, RoundDown)
0.3333333f0

julia> Float32(1/3, RoundUp)
0.33333334f0

利用可能な丸めモードについてはRoundingModeを参照してください。

source
Core.Float64Method
Float64(x [, mode::RoundingMode])

xからFloat64を作成します。xが正確に表現できない場合、modexの丸め方を決定します。

julia> Float64(pi, RoundDown)
3.141592653589793

julia> Float64(pi, RoundUp)
3.1415926535897936

利用可能な丸めモードについてはRoundingModeを参照してください。

source
Base.Rounding.roundingFunction
rounding(T)

T の現在の浮動小数点丸めモードを取得し、基本的な算術関数(+, -, *, / および sqrt)と型変換の丸めを制御します。

利用可能なモードについては、RoundingMode を参照してください。

source
Base.Rounding.setroundingMethod
setrounding(T, mode)

浮動小数点型 T の丸めモードを設定し、基本的な算術関数(+, -, *, / および sqrt)と型変換の丸めを制御します。デフォルトの RoundNearest 以外の丸めモードを使用すると、他の数値関数が不正確または無効な値を返す可能性があります。

現在、これは T == BigFloat の場合にのみサポートされています。

Warning

この関数はスレッドセーフではありません。すべてのスレッドで実行されるコードに影響を与えますが、設定を使用する計算と同時に呼び出された場合、その動作は未定義です。

source
Base.Rounding.setroundingMethod
setrounding(f::Function, T, mode)

浮動小数点型 T の丸めモードを f の実行中に変更します。これは論理的に次のように等価です:

old = rounding(T)
setrounding(T, mode)
f()
setrounding(T, old)

利用可能な丸めモードについては RoundingMode を参照してください。

source
Base.Rounding.get_zero_subnormalsFunction
get_zero_subnormals() -> Bool

サブノーマル浮動小数点値(「デノーマル」)に対する操作がIEEE算術のルールに従う場合はfalseを返し、ゼロに変換される可能性がある場合はtrueを返します。

!!! 警告 この関数は現在のスレッドにのみ影響します。

source
Base.Rounding.set_zero_subnormalsFunction
set_zero_subnormals(yes::Bool) -> Bool

yesfalseの場合、以降の浮動小数点演算は非正規値(「デノーマル」)に関するIEEE算術のルールに従います。それ以外の場合、浮動小数点演算は非正規の入力または出力をゼロに変換することが許可されます(ただし、必須ではありません)。trueを返しますが、yes==trueでハードウェアが非正規数のゼロ化をサポートしていない場合は除きます。

set_zero_subnormals(true)は、一部のハードウェアでいくつかの計算を高速化することができます。ただし、(x-y==0) == (x==y)のような同一性を壊す可能性があります。

Warning

この関数は現在のスレッドにのみ影響します。

source

Integers

Base.count_onesFunction
count_ones(x::Integer) -> Integer

xの2進数表現における1の数。

julia> count_ones(7)
3

julia> count_ones(Int32(-1))
32
source
Base.count_zerosFunction
count_zeros(x::Integer) -> Integer

xの2進数表現におけるゼロの数。

julia> count_zeros(Int32(2 ^ 16 - 1))
16

julia> count_zeros(-1)
0
source
Base.leading_zerosFunction
leading_zeros(x::Integer) -> Integer

xの2進数表現の先頭にあるゼロの数。

julia> leading_zeros(Int32(1))
31
source
Base.leading_onesFunction
leading_ones(x::Integer) -> Integer

xの2進数表現の先頭にある1の数。

julia> leading_ones(UInt32(2 ^ 32 - 2))
31
source
Base.trailing_zerosFunction
trailing_zeros(x::Integer) -> Integer

xの2進数表現の末尾にあるゼロの数。

julia> trailing_zeros(2)
1
source
Base.trailing_onesFunction
trailing_ones(x::Integer) -> Integer

xの2進数表現の末尾にある1の数。

julia> trailing_ones(3)
2
source
Base.isoddFunction
isodd(x::Number) -> Bool

x が奇数整数(すなわち、2で割り切れない整数)の場合は true を返し、それ以外の場合は false を返します。

Julia 1.7

Integer 引数は Julia 1.7 以降が必要です。

julia> isodd(9)
true

julia> isodd(10)
false
source
Base.isevenFunction
iseven(x::Number) -> Bool

x が偶数整数(すなわち、2で割り切れる整数)であれば true を返し、それ以外の場合は false を返します。

Julia 1.7

Integer 引数は Julia 1.7 以降が必要です。

julia> iseven(9)
false

julia> iseven(10)
true
source
Core.@int128_strMacro
@int128_str str

strInt128として解析します。文字列が有効な整数でない場合はArgumentErrorをスローします。

julia> int128"123456789123"
123456789123

julia> int128"123456789123.4"
ERROR: LoadError: ArgumentError: invalid base 10 digit '.' in "123456789123.4"
[...]
source
Core.@uint128_strMacro
@uint128_str str

strUInt128として解析します。文字列が有効な整数でない場合はArgumentErrorをスローします。

julia> uint128"123456789123"
0x00000000000000000000001cbe991a83

julia> uint128"-123456789123"
ERROR: LoadError: ArgumentError: invalid base 10 digit '-' in "-123456789123"
[...]
source

BigFloats and BigInts

BigFloat および BigInt タイプは、それぞれ任意精度の浮動小数点および整数演算を実装しています。 4d61726b646f776e2e436f64652822222c2022426967466c6f61742229_40726566 には GNU MPFR library が使用され、 4d61726b646f776e2e436f64652822222c2022426967496e742229_40726566 には GNU Multiple Precision Arithmetic Library (GMP) が使用されています。

Base.MPFR.BigFloatMethod
BigFloat(x::Union{Real, AbstractString} [, rounding::RoundingMode=rounding(BigFloat)]; [precision::Integer=precision(BigFloat)])

xから任意の精度の浮動小数点数を作成します。precisionは精度を指定します。rounding引数は、変換が正確に行えない場合に結果がどの方向に丸められるべきかを指定します。指定しない場合、これらは現在のグローバル値によって設定されます。

BigFloat(x::Real)convert(BigFloat,x)と同じですが、x自体がすでにBigFloatである場合は、現在のグローバル精度に設定された値を返します。convertは常にxを返します。

BigFloat(x::AbstractString)parseと同一です。これは、10進数リテラルが解析時にFloat64に変換されるため、便利のために提供されています。したがって、BigFloat(2.1)は期待通りの結果を返さないかもしれません。

参照:

Julia 1.1

precisionをキーワード引数として使用するには、少なくともJulia 1.1が必要です。Julia 1.0ではprecisionは2番目の位置引数です(BigFloat(x, precision))。

julia> BigFloat(2.1) # ここでの2.1はFloat64です
2.100000000000000088817841970012523233890533447265625

julia> BigFloat("2.1") # 2.1に最も近いBigFloat
2.099999999999999999999999999999999999999999999999999999999999999999999999999986

julia> BigFloat("2.1", RoundUp)
2.100000000000000000000000000000000000000000000000000000000000000000000000000021

julia> BigFloat("2.1", RoundUp, precision=128)
2.100000000000000000000000000000000000007
source
Base.precisionFunction
precision(num::AbstractFloat; base::Integer=2)
precision(T::Type; base::Integer=2)

浮動小数点数の精度を取得します。これは、有効な桁数におけるビット数によって定義されます。また、浮動小数点型 T の精度(TBigFloat のような可変精度型である場合はその現在のデフォルト)を取得します。

base が指定されている場合、その基数における有効桁数の最大値を返します。

Julia 1.8

base キーワードは少なくとも Julia 1.8 が必要です。

source
Base.MPFR.setprecisionFunction
setprecision([T=BigFloat,] precision::Int; base=2)

T の算術に使用される精度(デフォルトではビット単位)を設定します。base が指定されている場合、精度は指定された base で少なくとも precision 桁を提供するために必要な最小値です。

Warning

この関数はスレッドセーフではありません。すべてのスレッドで実行されるコードに影響を与えますが、設定を使用する計算と同時に呼び出された場合、その動作は未定義です。

Julia 1.8

base キーワードは少なくとも Julia 1.8 が必要です。

source
setprecision(f::Function, [T=BigFloat,] precision::Integer; base=2)

指定された base の間、f のために T の算術精度を変更します。これは論理的に次のように等価です:

old = precision(BigFloat)
setprecision(BigFloat, precision)
f()
setprecision(BigFloat, old)

しばしば setprecision(T, precision) do ... end のように使用されます。

注意:nextfloat()prevfloat()setprecision で言及された精度を使用しません。

Julia 1.8

base キーワードは少なくとも Julia 1.8 を必要とします。

source
Base.GMP.BigIntMethod
BigInt(x)

任意精度の整数を作成します。xInt(または Int に変換可能な任意のもの)である可能性があります。この型には通常の数学演算子が定義されており、結果は BigInt に昇格されます。

インスタンスは、parse を介して文字列から構築するか、big 文字列リテラルを使用して構築できます。

julia> parse(BigInt, "42")
42

julia> big"313"
313

julia> BigInt(10)^19
10000000000000000000
source
Core.@big_strMacro
@big_str str

文字列をBigIntまたはBigFloatに解析し、文字列が有効な数値でない場合はArgumentErrorをスローします。整数の場合、_は文字列内で区切り文字として許可されています。

julia> big"123_456"
123456

julia> big"7891.5"
7891.5

julia> big"_"
ERROR: ArgumentError: invalid number format _ for BigInt or BigFloat
[...]
Warning

BigFloat値を構築するために@big_strを使用すると、単純に期待される動作にならない場合があります: マクロとして、@big_strロード時のグローバル精度(setprecision)および丸めモード(setrounding)設定に従います。したがって、() -> precision(big"0.3")のような関数は、関数が定義された時点での精度の値に依存する定数を返します。関数が呼び出された時点での精度ではありません。

source