수색…


비고

숫자 계층 구조

루비는 숫자를 표현하는 몇 가지 내장 클래스를 포함합니다 :

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 은 기본적으로로드되지 않는 유일한 BigDecimal 입니다. 다음과 같이로드 할 수 있습니다.

require "bigdecimal"

루비 2.4+에서는 FixnumBignum 이 통합되어 있습니다. 모든 정수는 이제 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 메소드를 사용하여 StringInteger 로 변환 할 수 있습니다.

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"

두 숫자 나누기

두 개의 숫자를 나눌 때 원하는 유형에주의를 기울이십시오. 두 정수 를 나눌 경우 정수 나누기가 호출됩니다 . float 나누기를 실행하는 것이 목표라면 적어도 하나의 매개 변수는 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 Numbers

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow