티스토리 뷰

BACKEND

0.1 + 0.2 = ?

나를찾는아이 2023. 8. 22. 15:38
728x90
반응형

0.1 + 0.2 는 무엇일까요?

 

0.1 + 0.2 수학적으로 우리가 암산으로도 쉽게 결과를 대답할수 있습니다

 

답은 0.3 입니다

 

 

이걸 컴퓨터가 계산하면 어떻게 될까요?

 

// java
public class HelloWorld{
     public static void main(String []args){
        System.out.println(0.1+0.2); // 0.30000000000000004
     }
}

 

// swift
print(0.1+0.2) // 0.30000000000000004

 

 

// js
0.1 + 0.2 = 0.30000000000000004

 

공통적으로 0.3이 아닌 0.300.....4라는 답을 주고 있습니다

 

2진법을 이용하여 계산하는 컴퓨터가 소수점을 계산할때 발생할수밖에 없는 문제입니다

 

 

0.1 + 0.2 === 0.3 // false

 

그래서 다음과 같은 연산은 영원히 true에 닿을수 없는 문제가 발생합니다

 

 

여러분이 이를 핸들링할수 있는 여러방법이 있습니다

 

1. 적절한 자리수에서 반올림을 하는것도 방법이구요

 

2. 

function equal(x, y) {
  return Math.abs(x - y) < Number.EPSILON;
}

const x = 0.2;
const y = 0.3;
const z = 0.1;
console.log(equal(x + z, y)); // true

 

javascript는 Number.EPSILON을 통해 컴퓨터가 계산할수 있는 가장 작은수를 검증하여 접근할수 있는 방법도 있습니다

 

 

3. 

 

https://github.com/MikeMcl/decimal.js

 

GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript

An arbitrary-precision Decimal type for JavaScript - GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript

github.com

 

연산을 돕는 별도의 패키지를 사용하는 방법도 있습니다

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함