Numbers
Standard Numeric Types
Base
のNumber
のすべてのサブタイプの型ツリーは以下のようになります。抽象型はマークされており、残りは具体的な型です。
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.Number
— Type数
すべての数値型のための抽象スーパタイプ。
Core.Real
— TypeReal <: Number
すべての実数のための抽象スーパタイプ。
Core.AbstractFloat
— TypeAbstractFloat <: Real
すべての浮動小数点数のための抽象スーパタイプ。
Core.Integer
— TypeInteger <: Real
すべての整数の抽象スーパタイプ(例:Signed
、Unsigned
、およびBool
)。
また、isinteger
、trunc
、div
も参照してください。
例
julia> 42 isa Integer
true
julia> 1.0 isa Integer
false
julia> isinteger(1.0)
true
Core.Signed
— TypeSigned <: Integer
すべての符号付き整数の抽象スーパタイプです。
Core.Unsigned
— TypeUnsigned <: Integer
すべての符号なし整数のための抽象スーパタイプです。
組み込みの符号なし整数は16進数で表示され、接頭辞 0x
が付いており、同じ方法で入力できます。
例
julia> typemax(UInt8)
0xff
julia> Int(0x00d)
13
julia> unsigned(true)
0x0000000000000001
Base.AbstractIrrational
— TypeAbstractIrrational <: Real
正確な無理数値を表す数値型であり、他の数値量との算術演算において自動的に正しい精度に丸められます。
サブタイプ MyIrrational <: AbstractIrrational
は、少なくとも ==(::MyIrrational, ::MyIrrational)
、hash(x::MyIrrational, h::UInt)
、および convert(::Type{F}, x::MyIrrational) where {F <: Union{BigFloat,Float32,Float64}}
を実装する必要があります。
サブタイプが時折有理数を表すために使用される場合(例えば、整数 n
に対して √n
を表す平方根型は、n
が完全平方数のときに有理数の結果を返します)、その場合は isinteger
、iszero
、isone
、および ==
を Real
値とともに実装する必要があります(これらはすべて AbstractIrrational
型に対してデフォルトで false
になります)。さらに、hash
を対応する Rational
と等しく定義する必要があります。
Concrete number types
Core.Float16
— TypeFloat16 <: AbstractFloat <: Real
16ビット浮動小数点数型(IEEE 754標準)。バイナリ形式は1ビットの符号、5ビットの指数、10ビットの仮数です。
Core.Float32
— TypeFloat32 <: 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]
。
Core.Float64
— TypeFloat64 <: AbstractFloat <: Real
64ビット浮動小数点数型(IEEE 754標準)。バイナリ形式は1ビットの符号、11ビットの指数、52ビットの小数部です。さまざまなビットにアクセスするには、bitstring
、signbit
、exponent
、frexp
、および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
です。
Base.MPFR.BigFloat
— TypeBigFloat <: AbstractFloat
任意精度浮動小数点数型。
Core.Bool
— TypeBool <: Integer
ブール型で、値は true
と false
です。
Bool
は数の一種です:false
は数値的に 0
と等しく、true
は数値的に 1
と等しいです。さらに、false
は NaN
と Inf
に対して乗法的な「強いゼロ」として機能します:
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
Core.Int8
— TypeInt8 <: Signed <: Integer
8ビット符号付き整数型。
n ∈ -128:127
の数を表します。このような整数は警告なしにオーバーフローするため、typemax(Int8) + Int8(1) < 0
となります。
Core.UInt8
— TypeUInt8 <: Unsigned <: Integer
8ビット符号なし整数型。
16進数で表示されるため、0x07 == 7。
Core.Int16
— TypeInt16 <: Signed <: Integer
16ビット符号付き整数型。
n ∈ -32768:32767
の数を表します。このような整数は警告なしにオーバーフローするため、typemax(Int16) + Int16(1) < 0
となります。
Core.UInt16
— TypeUInt16 <: Unsigned <: Integer
16ビット符号なし整数型。
16進数で表示されるため、0x000f == 15。
Core.Int32
— TypeInt32 <: Signed <: Integer
32ビット符号付き整数型。
このような整数は警告なしにオーバーフローするため、typemax(Int32) + Int32(1) < 0
となります。
Core.UInt32
— TypeUInt32 <: Unsigned <: Integer
32ビット符号なし整数型。
16進数で表示されるため、0x0000001f == 31。
Core.Int64
— TypeInt64 <: Signed <: Integer
64ビット符号付き整数型。
このような整数は警告なしにオーバーフローするため、typemax(Int64) + Int64(1) < 0
となります。
Core.UInt64
— TypeUInt64 <: Unsigned <: Integer
64ビット符号なし整数型。
16進数で表示されるため、0x000000000000003f == 63。
Core.Int128
— TypeInt128 <: Signed <: Integer
128ビット符号付き整数型。
このような整数は警告なしにオーバーフローするため、typemax(Int128) + Int128(1) < 0
となります。
Core.UInt128
— TypeUInt128 <: Unsigned <: Integer
128ビット符号なし整数型。
16進数で表示されるため、0x0000000000000000000000000000007f == 127。
Core.Int
— TypeInt
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
のように、より広い型を使用します。
Core.UInt
— TypeUInt
Sys.WORD_SIZEビットの符号なし整数型、UInt <: Unsigned <: Integer
。
Int
と同様に、エイリアスUInt
は、特定のコンピュータのSys.WORD_SIZE
の値に応じて、UInt32
またはUInt64
のいずれかを指すことがあります。
16進数で表示および解析されます:UInt(15) === 0x000000000000000f
。
Base.GMP.BigInt
— TypeBigInt <: Signed
任意精度整数型。
Base.Complex
— TypeComplex{T<:Real} <: Number
実数および虚数部分の型が T
の複素数型。
ComplexF16
、ComplexF32
および ComplexF64
はそれぞれ Complex{Float16}
、Complex{Float32}
および Complex{Float64}
のエイリアスです。
Base.Rational
— TypeRational{T<:Integer} <: Real
有理数型で、分子と分母の型は T
です。有理数はオーバーフローがチェックされます。
Base.Irrational
— TypeIrrational{sym} <: AbstractIrrational
記号 sym
で表される正確な無理数値を表す数値型で、例えば π
、ℯ
および γ
などがあります。
また、AbstractIrrational
も参照してください。
Data Formats
Base.digits
— Functiondigits([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))
となります。
他にも ndigits
、digits!
、および基数 2 の場合は bitstring
、count_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
Base.digits!
— Functiondigits!(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
Base.bitstring
— Functionbitstring(n)
原始型のリテラルビット表現を示す文字列です。
関連項目としては count_ones
, count_zeros
, digits
があります。
例
julia> bitstring(Int32(4))
"00000000000000000000000000000100"
julia> bitstring(2.2)
"0100000000000001100110011001100110011001100110011001100110011010"
Base.parse
— Functionparse(::Type{SimpleColor}, rgb::String)
tryparse(SimpleColor, rgb::String)
の類似で、nothing
を返す代わりにエラーを発生させます。
parse(::Type{Platform}, triplet::AbstractString)
文字列プラットフォームトリプレットを Platform
オブジェクトに戻します。
parse(type, str; base)
文字列を数値として解析します。Integer
型の場合、基数を指定できます(デフォルトは 10 です)。浮動小数点型の場合、文字列は10進浮動小数点数として解析されます。Complex
型は、形式 "R±Iim"
の10進文字列から Complex(R,I)
の要求された型として解析されます; "i"
または "j"
も "im"
の代わりに使用でき、 "R"
または "Iim"
も許可されます。文字列が有効な数値を含まない場合、エラーが発生します。
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
Base.tryparse
— Functiontryparse(::Type{SimpleColor}, rgb::String)
rgb
をSimpleColor
として解析しようとします。rgb
が#
で始まり、長さが7の場合、RGBTuple
に基づくSimpleColor
に変換されます。rgb
がa
-z
で始まる場合、rgb
は色名として解釈され、Symbol
に基づくSimpleColor
に変換されます。
それ以外の場合は、nothing
が返されます。
例
julia> tryparse(SimpleColor, "blue")
SimpleColor(blue)
julia> tryparse(SimpleColor, "#9558b2")
SimpleColor(#9558b2)
julia> tryparse(SimpleColor, "#nocolor")
Base.big
— FunctionBase.signed
— Functionsigned(T::Integer)
整数のビット型を同じサイズの符号付き型に変換します。
例
julia> signed(UInt16)
Int16
julia> signed(UInt64)
Int64
Base.unsigned
— Functionunsigned(T::Integer)
整数ビット型を同じサイズの符号なし型に変換します。
例
julia> unsigned(Int16)
UInt16
julia> unsigned(UInt64)
UInt64
Base.float
— Methodfloat(x)
数値または配列を浮動小数点データ型に変換します。
例
julia> float(1:1000)
1.0:1.0:1000.0
julia> float(typemax(Int32))
2.147483647e9
Base.Math.significand
— Functionsignificand(x)
浮動小数点数の仮数(別名:マンティッサ)を抽出します。x
が非ゼロの有限数である場合、結果は x
と同じ型と符号の数になり、その絶対値は区間 $[1,2)$ にあります。それ以外の場合は x
が返されます。
関連情報として frexp
、exponent
も参照してください。
例
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)
Base.Math.exponent
— Functionexponent(x::Real) -> Int
2^y ≤ abs(x)
を満たす最大の整数 y
を返します。
x
がゼロ、無限大、または NaN
の場合、DomainError
をスローします。他のすべての非非正規浮動小数点数 x
に対して、これは x
の指数ビットに対応します。
他にも signbit
、significand
、frexp
、issubnormal
、log2
、ldexp
を参照してください。
例
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.
[...]
Base.complex
— Methodcomplex(r, [i])
実数または配列を複素数に変換します。i
はデフォルトでゼロです。
例
julia> complex(7)
7 + 0im
julia> complex([1, 2, 3])
3-element Vector{Complex{Int64}}:
1 + 0im
2 + 0im
3 + 0im
Base.bswap
— Functionbswap(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"
Base.hex2bytes
— Functionhex2bytes(itr)
与えられたイテラブル itr
は、16進数の数字のシーケンスに対するASCIIコードの列であり、バイナリ表現に対応する Vector{UInt8}
のバイトを返します:itr
の各連続する2桁の16進数が、返されるベクターの1バイトの値を与えます。
itr
の長さは偶数でなければならず、返される配列の長さは itr
の半分になります。インプレースバージョンの hex2bytes!
や、逆の bytes2hex
も参照してください。
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
Base.hex2bytes!
— Functionhex2bytes!(dest::AbstractVector{UInt8}, itr)
イテラブルな itr
を、16進数文字列を表すバイトからそのバイナリ表現に変換します。これは hex2bytes
に似ていますが、出力は dest
にインプレースで書き込まれます。dest
の長さは itr
の長さの半分でなければなりません。
UInt8 を生成するイテレータで hex2bytes! を呼び出すには、バージョン 1.7 が必要です。以前のバージョンでは、呼び出す前にイテラブルを収集することができます。
Base.bytes2hex
— Functionbytes2hex(itr) -> String
bytes2hex(io::IO, itr)
イテレータ itr
のバイトをその16進数文字列表現に変換します。bytes2hex(itr)
を介して String
を返すか、bytes2hex(io, itr)
を介して文字列を io
ストリームに書き込みます。16進数の文字はすべて小文字です。
任意のイテレータが 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"
General Number Functions and Constants
Base.one
— Functionone(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
関数や、LinearAlgebra
のI
も参照してください。
例
julia> one(3.7)
1.0
julia> one(Int)
1
julia> import Dates; one(Dates.Day(1))
1
Base.oneunit
— Functiononeunit(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
Base.zero
— Functionzero(x)
zero(::Type)
x
の型に対する加法単位元を取得します(x
は型自体を指定することもできます)。
関連項目としては、iszero
、one
、oneunit
、oftype
があります。
例
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
Base.im
— ConstantBase.MathConstants.pi
— Constantπ
pi
定数 pi。
Unicode π
は、Julia REPL で \pi
と書いてタブを押すことで入力でき、多くのエディタでも同様です。
例
julia> pi
π = 3.1415926535897...
julia> 1/2pi
0.15915494309189535
Base.MathConstants.ℯ
— Constantℯ
e
定数 ℯ。
Unicode ℯ
は、Julia REPL で \euler
と入力してタブを押すことで、また多くのエディタで入力できます。
例
julia> ℯ
ℯ = 2.7182818284590...
julia> log(ℯ)
1
julia> ℯ^(im)π ≈ -1
true
Base.MathConstants.catalan
— Constantカタラン数
# 例
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 ```
Base.MathConstants.eulergamma
— Constantγ
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
Base.MathConstants.golden
— Constantφ
黄金比
黄金比。
例
julia> Base.MathConstants.golden
φ = 1.6180339887498...
julia> (2ans - 1)^2 ≈ 5
true
Base.Inf
— ConstantInf, Inf64
型Float64
の正の無限大。
参照: isfinite
, typemax
, NaN
, Inf32
。
例
julia> π/0
Inf
julia> +1.0 / -0.0
-Inf
julia> ℯ^-Inf
0.0
Base.Inf64
— ConstantInf, Inf64
型Float64
の正の無限大。
参照: isfinite
, typemax
, NaN
, Inf32
。
例
julia> π/0
Inf
julia> +1.0 / -0.0
-Inf
julia> ℯ^-Inf
0.0
Base.Inf32
— ConstantInf32
型Float32
の正の無限大。
Base.Inf16
— ConstantInf16
型Float16
の正の無限大。
Base.NaN
— ConstantNaN, 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)
```
Base.NaN64
— ConstantNaN, 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)
```
Base.NaN32
— ConstantBase.NaN16
— ConstantBase.issubnormal
— Functionissubnormal(f) -> Bool
浮動小数点数が非正規化であるかどうかをテストします。
IEEE浮動小数点数は、指数ビットがゼロで、仮数がゼロでない場合に非正規化と呼ばれます。
例
julia> floatmin(Float32)
1.1754944f-38
julia> issubnormal(1.0f-37)
false
julia> issubnormal(1.0f-38)
true
Base.isfinite
— Functionisfinite(f) -> Bool
数が有限であるかどうかをテストします。
例
julia> isfinite(5)
true
julia> isfinite(NaN32)
false
Base.isinf
— FunctionBase.isnan
— FunctionBase.iszero
— Functioniszero(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
Base.isone
— Functionisone(x)
x
が one(x)
と等しい場合は true
を返します。x
が配列の場合、これは x
が単位行列であるかどうかをチェックします。
例
julia> isone(1.0)
true
julia> isone([1 0; 0 2])
false
julia> isone([1 0; 0 true])
true
Base.nextfloat
— Functionnextfloat(x::AbstractFloat, n::Integer)
n
回の nextfloat
を x
に適用した結果(n >= 0
の場合)、または -n
回の prevfloat
の適用結果(n < 0
の場合)。
nextfloat(x::AbstractFloat)
同じ型の最小の浮動小数点数 y
を返します。条件は x < y
です。もしそのような y
が存在しない場合(例えば、x
が Inf
または NaN
の場合)、x
を返します。
関連情報: prevfloat
, eps
, issubnormal
.
Base.prevfloat
— Functionprevfloat(x::AbstractFloat, n::Integer)
n
回の prevfloat
を x
に適用した結果(n >= 0
の場合)または -n
回の nextfloat
の適用結果(n < 0
の場合)。
prevfloat(x::AbstractFloat)
同じ型の最大の浮動小数点数 y
を返します。条件は y < x
です。もしそのような y
が存在しない場合(例えば x
が -Inf
または NaN
の場合)、x
を返します。
Base.isinteger
— Functionisinteger(x) -> Bool
x
が数値的に整数と等しいかどうかをテストします。
例
julia> isinteger(4.0)
true
Base.isreal
— Functionisreal(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
Core.Float32
— MethodFloat32(x [, mode::RoundingMode])
x
からFloat32
を作成します。x
が正確に表現できない場合、mode
がx
の丸め方を決定します。
例
julia> Float32(1/3, RoundDown)
0.3333333f0
julia> Float32(1/3, RoundUp)
0.33333334f0
利用可能な丸めモードについてはRoundingMode
を参照してください。
Core.Float64
— MethodFloat64(x [, mode::RoundingMode])
x
からFloat64
を作成します。x
が正確に表現できない場合、mode
がx
の丸め方を決定します。
例
julia> Float64(pi, RoundDown)
3.141592653589793
julia> Float64(pi, RoundUp)
3.1415926535897936
利用可能な丸めモードについてはRoundingMode
を参照してください。
Base.Rounding.rounding
— Functionrounding(T)
型 T
の現在の浮動小数点丸めモードを取得し、基本的な算術関数(+
, -
, *
, /
および sqrt
)と型変換の丸めを制御します。
利用可能なモードについては、RoundingMode
を参照してください。
Base.Rounding.setrounding
— Methodsetrounding(T, mode)
浮動小数点型 T
の丸めモードを設定し、基本的な算術関数(+
, -
, *
, /
および sqrt
)と型変換の丸めを制御します。デフォルトの RoundNearest
以外の丸めモードを使用すると、他の数値関数が不正確または無効な値を返す可能性があります。
現在、これは T == BigFloat
の場合にのみサポートされています。
この関数はスレッドセーフではありません。すべてのスレッドで実行されるコードに影響を与えますが、設定を使用する計算と同時に呼び出された場合、その動作は未定義です。
Base.Rounding.setrounding
— Methodsetrounding(f::Function, T, mode)
浮動小数点型 T
の丸めモードを f
の実行中に変更します。これは論理的に次のように等価です:
old = rounding(T)
setrounding(T, mode)
f()
setrounding(T, old)
利用可能な丸めモードについては RoundingMode
を参照してください。
Base.Rounding.get_zero_subnormals
— Functionget_zero_subnormals() -> Bool
サブノーマル浮動小数点値(「デノーマル」)に対する操作がIEEE算術のルールに従う場合はfalse
を返し、ゼロに変換される可能性がある場合はtrue
を返します。
!!! 警告 この関数は現在のスレッドにのみ影響します。
Base.Rounding.set_zero_subnormals
— Functionset_zero_subnormals(yes::Bool) -> Bool
yes
がfalse
の場合、以降の浮動小数点演算は非正規値(「デノーマル」)に関するIEEE算術のルールに従います。それ以外の場合、浮動小数点演算は非正規の入力または出力をゼロに変換することが許可されます(ただし、必須ではありません)。true
を返しますが、yes==true
でハードウェアが非正規数のゼロ化をサポートしていない場合は除きます。
set_zero_subnormals(true)
は、一部のハードウェアでいくつかの計算を高速化することができます。ただし、(x-y==0) == (x==y)
のような同一性を壊す可能性があります。
この関数は現在のスレッドにのみ影響します。
Integers
Base.count_ones
— Functioncount_ones(x::Integer) -> Integer
x
の2進数表現における1の数。
例
julia> count_ones(7)
3
julia> count_ones(Int32(-1))
32
Base.count_zeros
— Functioncount_zeros(x::Integer) -> Integer
x
の2進数表現におけるゼロの数。
例
julia> count_zeros(Int32(2 ^ 16 - 1))
16
julia> count_zeros(-1)
0
Base.leading_zeros
— Functionleading_zeros(x::Integer) -> Integer
x
の2進数表現の先頭にあるゼロの数。
例
julia> leading_zeros(Int32(1))
31
Base.leading_ones
— Functionleading_ones(x::Integer) -> Integer
x
の2進数表現の先頭にある1の数。
例
julia> leading_ones(UInt32(2 ^ 32 - 2))
31
Base.trailing_zeros
— Functiontrailing_zeros(x::Integer) -> Integer
x
の2進数表現の末尾にあるゼロの数。
例
julia> trailing_zeros(2)
1
Base.trailing_ones
— Functiontrailing_ones(x::Integer) -> Integer
x
の2進数表現の末尾にある1の数。
例
julia> trailing_ones(3)
2
Base.isodd
— Functionisodd(x::Number) -> Bool
x
が奇数整数(すなわち、2で割り切れない整数)の場合は true
を返し、それ以外の場合は false
を返します。
非 Integer
引数は Julia 1.7 以降が必要です。
例
julia> isodd(9)
true
julia> isodd(10)
false
Base.iseven
— Functioniseven(x::Number) -> Bool
x
が偶数整数(すなわち、2で割り切れる整数)であれば true
を返し、それ以外の場合は false
を返します。
非 Integer
引数は Julia 1.7 以降が必要です。
例
julia> iseven(9)
false
julia> iseven(10)
true
Core.@int128_str
— Macro@int128_str str
str
をInt128
として解析します。文字列が有効な整数でない場合はArgumentError
をスローします。
例
julia> int128"123456789123"
123456789123
julia> int128"123456789123.4"
ERROR: LoadError: ArgumentError: invalid base 10 digit '.' in "123456789123.4"
[...]
Core.@uint128_str
— Macro@uint128_str str
str
をUInt128
として解析します。文字列が有効な整数でない場合はArgumentError
をスローします。
例
julia> uint128"123456789123"
0x00000000000000000000001cbe991a83
julia> uint128"-123456789123"
ERROR: LoadError: ArgumentError: invalid base 10 digit '-' in "-123456789123"
[...]
BigFloats and BigInts
BigFloat
および BigInt
タイプは、それぞれ任意精度の浮動小数点および整数演算を実装しています。 4d61726b646f776e2e436f64652822222c2022426967466c6f61742229_40726566
には GNU MPFR library が使用され、 4d61726b646f776e2e436f64652822222c2022426967496e742229_40726566
には GNU Multiple Precision Arithmetic Library (GMP) が使用されています。
Base.MPFR.BigFloat
— MethodBigFloat(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)
は期待通りの結果を返さないかもしれません。
参照:
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
Base.precision
— Functionprecision(num::AbstractFloat; base::Integer=2)
precision(T::Type; base::Integer=2)
浮動小数点数の精度を取得します。これは、有効な桁数におけるビット数によって定義されます。また、浮動小数点型 T
の精度(T
が BigFloat
のような可変精度型である場合はその現在のデフォルト)を取得します。
base
が指定されている場合、その基数における有効桁数の最大値を返します。
base
キーワードは少なくとも Julia 1.8 が必要です。
Base.MPFR.setprecision
— Functionsetprecision([T=BigFloat,] precision::Int; base=2)
T
の算術に使用される精度(デフォルトではビット単位)を設定します。base
が指定されている場合、精度は指定された base
で少なくとも precision
桁を提供するために必要な最小値です。
この関数はスレッドセーフではありません。すべてのスレッドで実行されるコードに影響を与えますが、設定を使用する計算と同時に呼び出された場合、その動作は未定義です。
base
キーワードは少なくとも Julia 1.8 が必要です。
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
で言及された精度を使用しません。
base
キーワードは少なくとも Julia 1.8 を必要とします。
Base.GMP.BigInt
— MethodBigInt(x)
任意精度の整数を作成します。x
は Int
(または Int
に変換可能な任意のもの)である可能性があります。この型には通常の数学演算子が定義されており、結果は BigInt
に昇格されます。
インスタンスは、parse
を介して文字列から構築するか、big
文字列リテラルを使用して構築できます。
例
julia> parse(BigInt, "42")
42
julia> big"313"
313
julia> BigInt(10)^19
10000000000000000000
Core.@big_str
— Macro@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
[...]
BigFloat
値を構築するために@big_str
を使用すると、単純に期待される動作にならない場合があります: マクロとして、@big_str
はロード時のグローバル精度(setprecision
)および丸めモード(setrounding
)設定に従います。したがって、() -> precision(big"0.3")
のような関数は、関数が定義された時点での精度の値に依存する定数を返します。関数が呼び出された時点での精度ではありません。