트랙
/
Elixir
Elixir
/
학습 과정
/
부동소수점 수
부동

부동소수점 수 에서 Elixir

8개의 연습 문제

부동소수점 수 소개

Elixir에는 정수와 실수, 두 가지 종류의 숫자가 있어요.

실수는 소수점 뒤에 숫자가 한 자리 이상 있는 수예요. 실수는 64비트 배정밀도 부동소수점 형식을 사용해요.

float = 3.45
# => 3.45

Elixir는 실수의 과학적 표기법도 지원해요.

1.25e-2
# => 0.0125

반올림 오류

실수는 반올림 오류로 악명이 높아요.

0.1 + 0.2
# => 0.30000000000000004

하지만 이런 오류는 Elixir만의 문제가 아니에요. 모든 프로그래밍 언어에서 발생해요. 컴퓨터의 모든 데이터는 이진 코드로 저장되고 처리되기 때문이에요. 이진수에서는 분모를 2^n(예: 1/4, 3/8, 5/16)으로 나타낼 수 있는 분수만 정확하게 표현할 수 있어요. 다른 분수는 근삿값으로 표현돼요.

# 3/4
Float.ratio(0.75)
# => {3, 4}

# 3/5
Float.ratio(0.6)
# => {5404319552844595, 9007199254740992}

이 문제에 대해 더 알고 싶다면 0.30000000000000004.com에서 살펴볼 수 있어요. Float Toy 페이지에는 부동소수점 수의 비트가 실제 부동소수점 값으로 어떻게 변환되는지 잘 설명한 그림이 있어요.

비교

정수와 실수는 값이 같으면 동등하다고(==) 볼 수 있어요. 하지만 서로 다른 타입이기 때문에 엄격하게 같을(===) 수는 없어요.

1 == 1.0
# => true

1 === 1.0
# => false

변환

정수와 실수는 하나의 산술 표현식 안에서 함께 섞어 쓸 수 있어요. 표현식에 실수를 사용하면 결과도 실수가 돼요.

2 * 3
# => 6

2 * 3.0
# => 6.0

실수는 반올림(round)하거나 올림(ceil)하거나 내림(floor)할 수 있어요.

실수를 실수로 반올림하려면 Float 모듈의 함수(Float.round, Float.ceil, Float.floor)를 사용해요. 대신 정수를 얻으려면 Kernel 모듈의 함수(round, ceil, floor)를 사용해요.

실수를 정수로 바꾸는 또 다른 방법은 trunc로 소수 부분을 잘라내는 거예요.

Float.ceil(5.2)
# => 6.0

ceil(5.2)
# => 6

trunc(5.2)
# => 5
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

부동소수점 수 배우기

연습이 잠겨 있어요

부동소수점 수 개념을 연습하려면 연습 문제 4개를 더 잠금 해제해요