티스토리 뷰
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
연산을 돕는 별도의 패키지를 사용하는 방법도 있습니다
728x90
반응형
'BACKEND' 카테고리의 다른 글
카카오 모먼트 API 사용하기 (2) | 2024.01.11 |
---|---|
typeorm PR 머지된 썰푼다 (0) | 2024.01.09 |
당신의 REST API는 멱등한가요? (0) | 2023.07.06 |
phpMyAdmin말고 adminer도 있네 (0) | 2023.06.22 |
mysql의 date 타입을 javscript의 date로 사용한다면 조심해주세요 (0) | 2023.05.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바스크립트
- 트위터
- AWS
- CSS
- 벤처
- 경진대회
- JavaScript
- php
- iPhone
- 네이버
- Apple
- 아이폰
- 아이디어
- 공모전
- 모바일
- 안드로이드
- 대학생
- 구글
- 게임
- android
- 애플
- 소프트웨어
- 창업
- 앱
- 웹표준
- 스마트폰
- 어플리케이션
- 앱스토어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함