Skip to content

Latest commit

Β 

History

History
566 lines (409 loc) Β· 13.8 KB

numbers.adoc

File metadata and controls

566 lines (409 loc) Β· 13.8 KB

숫자(Numbers)

1. μ •μˆ˜(Integers)

ν΄λ‘œμ €μ—μ„œ μ •μˆ˜λŠ” 자기 μžμ‹ μœΌλ‘œ ν‰κ°€λ˜λŠ” κ°’(value)이닀. 즉, μ•„λž˜μ—μ„œ μ •μˆ˜ 17을 ν‰κ°€ν•˜λ©΄ κ·Έ κ²°κ³ΌλŠ” 자기 μžμ‹ μΈ 17이 λœλ‹€.

17   ;=> 17

type ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄, ν•΄λ‹Ή 값이 μ–΄λ–€ μžλ£Œν˜•μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό 직접 확인해 λ³Ό 수 μžˆλ‹€.

(type 17)   ;=> java.lang.Long

μœ„μ˜ κ²°κ³Όμ—μ„œλ„ μ•Œ 수 μžˆλ“―μ΄, ν΄λ‘œμ €μ—μ„œ μ •μˆ˜ν˜•μ€ μžλ°”μ˜ 'κΈ°λ³Έ(primitive) μžλ£Œν˜• long' νƒ€μž…μ„ λ‚΄λΆ€μ μœΌλ‘œ 감싸고 μžˆλŠ” wrapper class인 java.lang.Long 클래슀의 μΈμŠ€ν„΄μŠ€μ΄λ‹€.

Caution
μžλ°”μ˜ κΈ°λ³Έ(primitive) μžλ£Œν˜•μΈ longν˜•μ΄ μ•„λ‹ˆλΌ, 레퍼런슀(reference) νƒ€μž…μΈ java.lang.Longν˜•μž„μ— μ£Όμ˜ν•˜μž. 레퍼런슀 νƒ€μž…μ΄λ―€λ‘œ μ»¬λ ‰μ…˜ μžλ£Œν˜•μ˜ μš”μ†Œλ‘œ 쓰일 수 μžˆλ‹€.
Note
ν΄λ‘œμ €μ—μ„œλŠ” μ •μˆ˜ μ—°μ‚°μ˜ 속도λ₯Ό 높이기 μœ„ν•œ λ°©λ²•μœΌλ‘œ, κΈ°λ³Έ μžλ£Œν˜•μΈ longν˜•λ„ λ‹€λ£° 수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. 이에 λŒ€ν•΄μ„œλŠ” Numerics and Mathematics μž₯μ—μ„œ μžμ„Ένžˆ 닀룬닀.

μ •μˆ˜ λ§¨μ•žμ— 숫자 0이 있으면 8μ§„μˆ˜λ₯Ό ν‘œμ‹œν•˜κ³ , 0x λ˜λŠ” 0Xκ°€ 있으면 16μ§„μˆ˜λ₯Ό ν‘œμ‹œν•œλ‹€.

010    ;=> 8

0x10   ;=> 16
0X10   ;=> 16

ν΄λ‘œμ €λŠ” 8μ§„μˆ˜μ™€ 16μ§„μˆ˜ 이외에도, 2μ§„μˆ˜μ—μ„œ 36μ§„μˆ˜κΉŒμ§€ ν‘œκΈ°ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. r λ˜λŠ” R 문자[1] μ•žμ— ν‘œν˜„ν•˜κ³ μž ν•˜λŠ” 진법을 λ‚˜νƒ€λ‚΄κ³ , κ·Έ 뒀에 숫자λ₯Ό ν‘œμ‹œν•˜λ©΄ λœλ‹€. μ‹€μ œ 숫자λ₯Ό ν‘œμ‹œν•  λ•Œ, 0 — 9λ₯Ό λ„˜μ–΄κ°€λŠ” μˆ«μžλŠ” μ•ŒνŒŒλ²³ a — z λ˜λŠ” A — Z 문자λ₯Ό μ΄μš©ν•œλ‹€.

Note
2 ~ 36μ§„μˆ˜κΉŒμ§€μ˜ ν‘œν˜„μ€ java.lang.Long.parseLong을 μ΄μš©ν•œλ‹€.
;; 2진법
2r1111   ;=> 15

;; 3진법
3r11     ;=> 4

;; 8진법
8r11     ;=> 9

;; 16진법
16rFF    ;=> 255

;; 36진법
36r1z    ;=> 71

μ •μˆ˜μ˜ 맨 뒀에 λŒ€λ¬Έμž N[2]을 뢙이면, Longν˜•λ³΄λ‹€ 큰 μž„μ˜μ˜ 길이의 μ •μˆ˜(arbitrary-precision integer)도 ν‘œν˜„ν•  수 μžˆλ‹€.

99999999999999999999N   ;=> 99999999999999999999N

λ‹€μŒμ˜ 2N은 java.lang.Longν˜•μ΄ μ•„λ‹ˆλΌ, clojure.lang.BigIntν˜•μ΄λ‹€.

2N          ;=> 2N

(type 2N)   ;=> clojure.lang.BigInt

Longν˜•λ³΄λ‹€ 큰 μ •μˆ˜μ— λͺ…μ‹œμ μœΌλ‘œ N을 뢙이지 μ•Šμ•„λ„, clojure.lang.BigIntν˜•μœΌλ‘œ μžλ™ ν˜•λ³€ν™˜λœλ‹€.

 99999999999999999999   ;=> 99999999999999999999N

μžλ™ 승격 μ—°μ‚°μž(+', -', *', inc', and dec')듀은 Long 계산이 μ˜€λ²„ν”Œλ‘œμš°κ°€ λ°œμƒν•˜λ©΄ μžλ™μœΌλ‘œ BigInt둜 λ³€ν™˜ν•΄ μ€€λ‹€.

(+ 1 Long/MAX_VALUE)
;>> java.lang.ArithmeticException: integer overflow

(+' 1 Long/MAX_VALUE)
;=> 9223372036854775808N

(class (+' 1 Long/MAX_VALUE))
;=> clojure.lang.BigInt

(class (+' 1))
;=> java.lang.Long

bigint ν•¨μˆ˜λŠ” BigIntλ₯Ό λ§Œλ“ λ‹€.

(bigint 1))     ;=> 1N

biginteger ν•¨μˆ˜λŠ” java.math.BigIntegerλ₯Ό λ§Œλ“ λ‹€.

(biginteger 1)          ;=> 1
(type (biginteger 1))   ;=> java.math.BigInteger

2. μ‹€μˆ˜(Floats)

ν΄λ‘œμ €μ—μ„œ 뢀동 μ†Œμˆ˜μ  μ‹€μˆ˜ μ—­μ‹œ 자기 μžμ‹ μœΌλ‘œ ν‰κ°€λ˜λŠ” κ°’(value)이닀. ν΄λ‘œμ €μ—μ„œ μ‹€μˆ˜ν˜•μ€ μžλ°”μ˜ 'κΈ°λ³Έ(primitive) μžλ£Œν˜• double' νƒ€μž…μ„ λ‚΄λΆ€μ μœΌλ‘œ 감싸고 μžˆλŠ” wrapper class인 java.lang.Double 클래슀의 μΈμŠ€ν„΄μŠ€μ΄λ‹€.

Note
ν΄λ‘œμ €μ—μ„œλŠ” μ‹€μˆ˜ μ—°μ‚°μ˜ 속도λ₯Ό 높이기 μœ„ν•œ λ°©λ²•μœΌλ‘œ, κΈ°λ³Έ μžλ£Œν˜•μΈ doubleν˜•λ„ λ‹€λ£° 수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. 이에 λŒ€ν•΄μ„œλŠ” Numerics and Mathematics μž₯μ—μ„œ μžμ„Ένžˆ 닀룬닀.
3.14          ;=> 3.14

(type 3.14)   ;=> java.lang.Double

과학적 ν‘œκΈ°λ²•(Scientific Notation)도 μ§€μ›ν•œλ‹€.

6.0221412927e23   ;=> 6.0221412927E23

μ‹€μˆ˜ 뒀에 λŒ€λ¬Έμž M[3]을 뢙이면, 정확도가 보μž₯λ˜λŠ” μž„μ˜μ˜ 길이의 μ‹€μˆ˜(arbitrary-precision signed floating point decimal)λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

100.01M           ;=> 100.01M

(type 100.01M)    ;=> java.math.BigDecimal

(* 100.01M 100)   ;=> 10001.00M

decimal? ν•¨μˆ˜λŠ” 주어진 μˆ«μžκ°€ BigDecimalν˜•μΈμ§€ νŒλ³„ν•œλ‹€.

(decimal? 0.1M)   ;=> true

(decimal? 0.1)    ;=> false
(decimal? 1)      ;=> false

bigdec ν•¨μˆ˜λŠ” BigDecimal을 λ§Œλ“ λ‹€.

(bigdec 3.0)    ;=> 3.0M

3. λΆ„μˆ˜ (Ratios)

ν΄λ‘œμ €μ—μ„œλŠ” λΆ„μˆ˜ μžλ£Œν˜•λ„ μ œκ³΅ν•œλ‹€. λΆ„μžμ™€ λΆ„λͺ¨ 사이에 μŠ¬λž˜μ‹œ(/) 기호λ₯Ό μ‚¬μš©ν•΄ ν‘œν˜„ν•œλ‹€. μ΄λ•Œ λΆ„μž, λΆ„λͺ¨μ™€ μŠ¬λž˜μ‹œ 기호 μ‚¬μ΄μ—λŠ” 곡백이 μ—†μ–΄μ•Ό ν•œλ‹€.

1/3          ;=> 1/3
7/4          ;=> 7/4

(type 2/3)   ;=> clojure.lang.Ratio

ratio? ν•¨μˆ˜λŠ” 주어진 μˆ«μžκ°€ clojure.lang.Ratioν˜•μΈμ§€λ₯Ό νŒλ³„ν•œλ‹€.

(ratio? 4/7)   ;=> true
(ratio? 7)     ;=> false

약뢄이 κ°€λŠ₯ν•œ κ²½μš°μ—λŠ”, μ•½λΆ„λœ 값이 λ°˜ν™˜λœλ‹€.

2/4   ;=> 1/2

λΆ„μžμ™€ λΆ„λͺ¨λŠ” λͺ¨λ‘ μ •μˆ˜ν˜•μ΄μ–΄μ•Ό ν•œλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.

2/3.5
;>> NumberFormatException Invalid number: 2/3.5

denominator ν•¨μˆ˜μ™€ numerator ν•¨μˆ˜λŠ” 인수둜 주어진 λΆ„μˆ˜μ˜ λΆ„μžμ™€ λΆ„λͺ¨ λΆ€λΆ„λ§Œμ„ λ°˜ν™˜ν•œλ‹€.

(numerator 2/3)     ;=> 2
(numerator 2/4)     ;=> 1

(denominator 2/3)   ;=> 3

λΆ„μˆ˜κ°€ ν¬ν•¨λœ κ³„μ‚°μ˜ κ²½μš°μ—λ„ μ •ν™•ν•œ 연산이 보μž₯λœλ‹€.

(+ 1/3 2/3)   ;=> 1N
(* 1/10 10)   ;=> 1N
(+ 1/3 1)     ;=> 4/3

λΆ„μˆ˜μ™€ μ‹€μˆ˜ μ‚¬μ΄μ˜ μ—°μ‚° κ²°κ³ΌλŠ” μ‹€μˆ˜ν˜•μ΄λ‹€.

(+ 1/3 1.0)   ;=> 1.3333333333333333

λΆ„μˆ˜λ₯Ό μ‹€μˆ˜λ‘œ κ°•μ œλ‘œ ν˜•λ³€ν™˜ν•˜κ³  싢을 λ•Œμ—λŠ” doubleμ΄λ‚˜ float ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

(double 1/3)   ;=> 0.3333333333333333
(float 1/3)    ;=> 0.33333334

rational? ν•¨μˆ˜λŠ” μœ λ¦¬μˆ˜μΈμ§€λ₯Ό νŒλ³„ν•œλ‹€. 즉, μ •μˆ˜λ‚˜ λΆ„μˆ˜μ΄λ©΄ trueλ₯Ό λ°˜ν™˜ν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

Tip
ν΄λ‘œμ €μ—μ„œ λΆ„μˆ˜ν˜•μ€ λ‚΄λΆ€μ μœΌλ‘œ λΆ„μžμ™€ λΆ„λͺ¨κ°€ μ •μˆ˜ν˜•μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€. λ”°λΌμ„œ 내뢀적인 κ΅¬ν˜„μ΄ μ •μˆ˜ν˜•μœΌλ‘œ 이루어진 λͺ¨λ“  μžλ£Œν˜•μ˜ 경우, rational? ν•¨μˆ˜λŠ” trueλ₯Ό λ°˜ν™˜ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.
(rational? 1/2)   ;=> true
(rational? 1)     ;=> true
(rational? 2N)    ;=> true

(rational? 1.0)   ;=> false

rationalize ν•¨μˆ˜λŠ” 주어진 숫자λ₯Ό 유리수(rational number), 즉 μ •μˆ˜λ‚˜ λΆ„μˆ˜λ‘œ λ³€ν™˜ν•œλ‹€. λ¬΄λ¦¬μˆ˜κ°€ 인수둜 주어진 κ²½μš°μ—λŠ” κ°€μž₯ κ·Όμ ‘ν•œ λΆ„μˆ˜λ‘œ λ³€ν™˜ν•œλ‹€.

(rationalize 1.5)   ;=> 3/2
(rationalize 2/4)   ;=> 1/2
(rationalize 4/2)   ;=> 2
(rationalize 2)     ;=> 2
(rationalize 2.0)   ;=> 2N

(rationalize Math/PI)         ;=> 3141592653589793/1000000000000000
(rationalize (Math/sqrt 2))   ;=> 14142135623730951/10000000000000000

4. μ‚°μˆ  μ—°μ‚° ν•¨μˆ˜

숫자 μžλ£Œν˜•μ„ λͺ¨λ‘ λ‹€λ£¨μ—ˆμœΌλ‹ˆ 이제 μ‚°μˆ  μ—°μ‚° ν•¨μˆ˜λ“€μ„ μ†Œκ°œν•œλ‹€. 그에 μ•žμ„œ, μˆ«μžλ“€μ˜ μ’…λ₯˜μ— 관계 없이 μˆ«μžμΈμ§€μ˜ μ—¬λΆ€λ₯Ό νŒλ³„ν•΄μ£ΌλŠ” ν•¨μˆ˜ number?κ°€ μžˆλ‹€.

(number? 1)      ;=> true
(number? 1.0)    ;=> true
(number? 1/3)    ;=> true

(number? 23N)    ;=> true
(number? 0.1M)   ;=> true

(number? :a)     ;=> false
(number? nil)    ;=> false
(number? "23")   ;=> false

사칙 μ—°μ‚° ν•¨μˆ˜λΆ€ν„° 닀루어 보자. 이 ν•¨μˆ˜λ“€μ€ 숫자의 μžλ£Œν˜•μ— 관계 없이 λ™μž‘ν•œλ‹€.

(+ 1 2)       ;=> 3
(+ 3.5 4.1)   ;=> 7.6
(+ 1/3 1/4)   ;=> 7/12

(- 10 5)      ;=> 5

(* 7 8)       ;=> 56

(/ 6 3)       ;=> 2
(/ 3 4)       ;=> 3/4
(/ 3 4.0)     ;=> 0.75

2개 μ΄μƒμ˜ μΈμˆ˜λ„ 올 수 μžˆλ‹€.

(+ 1 2 3 4 5)   ;=> 15
(- 10 9 8 7)    ;=> -14
(* 1 2 3 4 5)   ;=> 120
(/ 20 2 5)      ;=> 2

μΈμˆ˜κ°€ ν•˜λ‚˜λ„ μ—†μœΌλ©΄, + ν•¨μˆ˜λŠ” λ§μ…ˆμ˜ νžλ“±μ› 0을, * ν•¨μˆ˜λŠ” κ³±μ…ˆμ˜ 항등원 1을 λ°˜ν™˜ν•œλ‹€.

(+)   ;=> 0
(*)   ;=> 1

-와 / ν•¨μˆ˜μ˜ κ²½μš°λŠ”, μΈμˆ˜κ°€ ν•˜λ‚˜λ„ μ—†μœΌλ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.

(-)   ;>> ArityException Wrong number of args (0) passed to: core/-
(/)   ;>> ArityException Wrong number of args (0) passed to: core//

μΈμˆ˜κ°€ ν•œ 개만 μžˆλŠ” 경우, +와 * ν•¨μˆ˜λŠ” 주어진 인수λ₯Ό κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•˜μ§€λ§Œ, - ν•¨μˆ˜λŠ” λ§μ…ˆμ˜ 역원을, / ν•¨μˆ˜λŠ” κ³±μ…ˆμ˜ 역원을 λ°˜ν™˜ν•œλ‹€.

(+ 5)   ;=> 5
(* 9)   ;=> 9

(- 3)   ;=> -3
(/ 3)   ;=> 1/3

λͺ«(quotient)κ³Ό λ‚˜λ¨Έμ§€(remainder)λ₯Ό κ΅¬ν•˜λ €λ©΄, 각각 quot와 rem ν•¨μˆ˜λ₯Ό μ΄μš©ν•œλ‹€. 이 두 ν•¨μˆ˜λŠ” μ‹€μˆ˜μ—λ„ μ μš©λœλ‹€.

(quot 10 3)      ;=> 3
(rem 10 3)       ;=> 1

(quot 3.7 1.1)   ;=> 3.0
(rem 3.7 1.1)    ;=> 0.3999999999999999

inc와 dec ν•¨μˆ˜λŠ” 1μ”© 증가 λ˜λŠ” κ°μ†Œ μ‹œν‚¨λ‹€.

(inc 10)     ;=> 11
(inc 10.1)   ;=> 11.1
(inc 1/2)    ;=> 3/2

(dec 10)     ;=> 9
(dec 10.1)   ;=> 9.1
(dec 1/2)    ;=> -1/2

maxκ³Ό min ν•¨μˆ˜λŠ” 각각 주어진 μΈμˆ˜λ“€ 쀑 μ΅œλŒ€κ°’κ³Ό μ΅œμ†Œκ°’μ„ λ°˜ν™˜ν•œλ‹€.

(max 1 2 3 4 5)       ;=> 5
(min 1 2 3 4 5)       ;=> 1

(max 1.1 2 3 4 5.5)   ;=> 5.5
(min 1.1 2 3 4 5.5)   ;=> 1.1

`min-key`와 `max-key`λŠ” 주어진 μΈμˆ˜λ“€μ— ν•¨μˆ˜λ₯Ό μ μš©ν•΄μ„œ λ‚˜μ˜¨ μ΅œλŒ€κ°’κ³Ό μ΅œμ†Œκ°’μ„ λ°˜ν™˜ν•œλ‹€.

(min-key #(Math/abs %) -3 1 4)          ;=> 1
(apply min-key #(Math/abs %) [-3 1 4])  ;=> 1

(max-key #(Math/abs %) -3 1 4)          ;=> 4
(apply max-key #(Math/abs %) [-3 1 4])  ;=> 4

기타 μˆ˜ν•™ ν•¨μˆ˜λŠ” java.lang.Math 클래슀의 정적(static) λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄μ•Ό ν•œλ‹€.

Math/PI         ;=> 3.141592653589793
Math/E          ;=> 2.718281828459045

(Math/sqrt 2)   ;=> 1.4142135623730951

(Math/sin (/ Math/PI 2))   ;=> 1.0
(Math/cos 0)               ;=> 1.0

5. λ“±κ°€/λŒ€μ†Œ 비ꡐ ν•¨μˆ˜

μˆ«μžλ“€μ˜ λ“±κ°€λ₯Ό 비ꡐ할 λ–„μ—λŠ” = ν•¨μˆ˜λ³΄λ‹€λŠ” == ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€. = ν•¨μˆ˜λŠ” μˆ«μžλ“€μ΄ 인수둜 올 경우 μˆ«μžλ“€μ˜ νƒ€μž…κΉŒμ§€ κ°™μ•„μ•Ό trueλ₯Ό λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

(= 1 1.0)         ;=> false
(= 0.5 1/2)       ;=> false

(= 1.0 1.0 1.0)   ;=> true
(= 2 2 2)         ;=> true

λ°˜λ©΄μ— == ν•¨μˆ˜λŠ” νƒ€μž…μ΄ 같지 μ•Šμ•„λ„ μˆ˜ν•™μ μœΌλ‘œ 등가이면 trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

(== 1 1.0)         ;=> true
(== 0.5 1/2)       ;=> true

(== 1.0 1.0 1.0)   ;=> true
(== 2 2 2)         ;=> true

그리고 == ν•¨μˆ˜λŠ” μΈμžλ“€μ΄ λ°˜λ“œμ‹œ μˆ«μžν˜•μ΄μ–΄μ•Όλ§Œ ν•œλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€. λ”°λΌμ„œ == ν•¨μˆ˜λŠ” 숫자 μ „μš© λ“±κ°€ 비ꡐ ν•¨μˆ˜λ‘œ κΈ°μ–΅ν•˜λ©΄ λœλ‹€.

(== :a :a)
;>> ClassCastException clojure.lang.Keyword cannot be cast to java.lang.Number

λ°˜λ©΄μ—, = ν•¨μˆ˜λŠ” 숫자 μ΄μ™Έμ˜ μžλ£Œν˜•μ„ λΉ„κ΅ν•˜λŠ” 데 주둜 μ‚¬μš©λœλ‹€.

(= :a :a)         ;=> true
(= "cat" "cat")   ;=> true
(= [2 3] [2 3])   ;=> true

λŒ€μ†Œ 비ꡐ ν•¨μˆ˜μ—λŠ” <, <=, >, >=κ°€ μžˆλ‹€.

(< 10 15)    ;=> true
(<= 10 10)   ;=> true

이 ν•¨μˆ˜λ“€μ€ 2개 μ΄μƒμ˜ μΈμˆ˜λ“€μ΄ 올 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ (< a b c d)와 같은 식이 있으면, μ΄λŠ” μˆ˜ν•™μ μœΌλ‘œ a < b < c < dλ₯Ό λͺ¨λ‘ λ§Œμ‘±ν•΄μ•Ό trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

(< 1 2 3 4 5)     ;=> true
(< 1 2 3 3 5)     ;=> false

(<= 1 2 3 3 5)    ;=> true

6. λΉ„νŠΈ μ—°μ‚°

(bit-and 2r1100 2r1001)   ;=> 8
(bit-or  2r1100 2r1001)   ;=> 13
(bit-xor 2r1100 2r1001)   ;=> 5

7. 기타 μœ μš©ν•œ ν•¨μˆ˜λ“€

zero? ν•¨μˆ˜λŠ” 0인지λ₯Ό νŒλ³„ν•œλ‹€.

(zero? 0)     ;=> true
(zero? 0.0)   ;=> true

(zero? 1)     ;=> false
(zero? -1)    ;=> false

(zero? 1.0)   ;=> false
(zero? 1/2)   ;=> false

pos? ν•¨μˆ˜μ™€ neg? ν•¨μˆ˜λŠ”, 각각 μ–‘μˆ˜μΈμ§€ μŒμˆ˜μΈμ§€λ₯Ό νŒλ³„ν•œλ‹€.

(pos? 1)     ;=> true
(pos? 1.0)   ;=> true
(pos? 1/2)   ;=> true

(pos? 0)     ;=> false
(pos? -1)    ;=> false

(neg? -1)     ;=> true
(neg? -1.0)   ;=> true
(pos? -1/2)   ;=> true

(neg? 0)     ;=> false
(neg? 1)     ;=> false

odd? ν•¨μˆ˜μ™€ even? ν•¨μˆ˜λŠ”, 각각 ν™€μˆ˜μΈμ§€ μ§μˆ˜μΈμ§€λ₯Ό νŒλ³„ν•œλ‹€. μΈμˆ˜κ°€ μ •μˆ˜κ°€ μ•„λ‹ˆλ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.

(odd? 1)    ;=> true
(odd? 2)    ;=> false
(odd? 0)    ;=> false

(even? 2)   ;=> true
(even? 1)   ;=>false

(odd? 1.0)
;>> IllegalArgumentException Argument must be an integer: 1.0

1. radix의 r을 μ˜λ―Έν•œλ‹€.
2. iNteger의 N을 μ˜λ―Έν•œλ‹€.
3. μ›λž˜λŠ” deciMal의 Mμ—μ„œ λΉ„λ‘―λœ κ²ƒμ΄λ‚˜, Money의 M으둜 μ΄ν•΄ν•˜λŠ” μ‚¬λžŒλ„ μžˆλ‹€. 이 μžλ£Œν˜•μ€ μ •ν™•ν•œ 돈 계산이 ν•„μš”ν•  λ•Œ 주둜 μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.