Ruby Language
数字
サーチ…
備考
数階層
Rubyには数を表すための組み込みクラスがいくつか含まれています:
Numeric
Integer
Fixnum # 1
Bignum # 10000000000000000000
Float # 1.0
Complex # (1+0i)
Rational # Rational(2, 3) == 2/3
BigDecimal # not loaded by default
最も一般的なのは次のとおりです。
- 例えば正と負の整数を表す
Fixnum
-
Float
浮動小数点数を表現します
BigDecimal
はデフォルトでロードされていない唯一のものです。あなたはそれをロードすることができます:
require "bigdecimal"
Ruby 2.4以降では、 Fixnum
とBignum
が統一されています。 すべての整数はInteger
クラスのメンバーになりました。下位互換性のために、 Fixnum == Bignum == Integer
。
整数の作成
0 # creates the Fixnum 0
123 # creates the Fixnum 123
1_000 # creates the Fixnum 1000. You can use _ as separator for readability
デフォルトでは、表記法は基数10です。ただし、基数に応じて別の組み込み表記法があります。
0xFF # Hexadecimal representation of 255, starts with a 0x
0b100 # Binary representation of 4, starts with a 0b
0555 # Octal representation of 365, starts with a 0 and digits
文字列を整数に変換する
Integer
メソッドを使用すると、 String
をInteger
に変換できます。
Integer("123") # => 123
Integer("0xFF") # => 255
Integer("0b100") # => 4
Integer("0555") # => 365
Integer
メソッドに基本パラメータを渡して、特定の基数から数値を変換することもできます
Integer('10', 5) # => 5
Integer('74', 8) # => 60
Integer('NUM', 36) # => 30910
パラメータが変換できない場合、このメソッドはArgumentError
を発生させます。
Integer("hello")
# raises ArgumentError: invalid value for Integer(): "hello"
Integer("23-hello")
# raises ArgumentError: invalid value for Integer(): "23-hello"
String#to_i
メソッドを使用することもできます。しかし、この方法は少し許容性があり、 Integer
とは異なる動作をします。
"23".to_i # => 23
"23-hello".to_i # => 23
"hello".to_i # => 0
String#to_i
は、引数を受け取ります。
"10".to_i(2) # => 2
"10".to_i(3) # => 3
"A".to_i(16) # => 10
数値を文字列に変換する
Fixnum#to_sはオプションの基本引数をとり、その基数内の指定された数を表します。
2.to_s(2) # => "10"
3.to_s(2) # => "11"
3.to_s(3) # => "10"
10.to_s(16) # => "a"
引数が指定されていない場合は、基数10の数値を表します
2.to_s # => "2"
10423.to_s # => "10423"
2つの数字を分割する
2つの数字を分割するときは、あなたが返すタイプに注意を払う。 2つの整数を分割すると、整数の除算が呼び出されることに注意してください。フロート分割を実行することを目標とする場合、少なくとも1つのパラメータはfloat
型でなければなりません。
整数部:
3 / 2 # => 1
フロート分割
3 / 3.0 # => 1.0
16 / 2 / 2 # => 4
16 / 2 / 2.0 # => 4.0
16 / 2.0 / 2 # => 4.0
16.0 / 2 / 2 # => 4.0
合理的な数字
Rational
は分子と分母として有理数を表します。
r1 = Rational(2, 3)
r2 = 2.5.to_r
r3 = r1 + r2
r3.numerator # => 19
r3.denominator # => 6
Rational(2, 4) # => (1/2)
Rationalを作成する他の方法
Rational('2/3') # => (2/3)
Rational(3) # => (3/1)
Rational(3, -5) # => (-3/5)
Rational(0.2) # => (3602879701896397/18014398509481984)
Rational('0.2') # => (1/5)
0.2.to_r # => (3602879701896397/18014398509481984)
0.2.rationalize # => (1/5)
'1/4'.to_r # => (1/4)
複素数
1i # => (0+1i)
1.to_c # => (1+0i)
rectangular = Complex(2, 3) # => (2+3i)
polar = Complex('1@2') # => (-0.4161468365471424+0.9092974268256817i)
polar.rectangular # => [-0.4161468365471424, 0.9092974268256817]
rectangular.polar # => [3.605551275463989, 0.982793723247329]
rectangular + polar # => (1.5838531634528576+3.909297426825682i)
偶数と奇数
even?
メソッドを使用して、数値が偶数であるかどうかを判断できます
4.even? # => true
5.even? # => false
odd?
メソッドを使用して、数値が奇数かどうかを判断できます
4.odd? # => false
5.odd? # => true
丸数字
round
メソッドは、小数点以下の桁の最初の桁が5以上の場合は数値を丸め、その桁が4以下の場合は切り捨てます。これは、探している精度に対してオプションの引数を取ります。
4.89.round # => 5
4.25.round # => 4
3.141526.round(1) # => 3.1
3.141526.round(2) # => 3.14
3.141526.round(4) # => 3.1415
浮動小数点数は、 floor
メソッドの数値よりも小さい整数に切り下げることもできます
4.9999999999999.floor # => 4
ceil
メソッドを使用して、数値よりも小さい最小の整数に切り上げることもできます
4.0000000000001.ceil # => 5