[JavaScript] 부동소수점

민승기·2023년 10월 13일
0

JavaScript

목록 보기
8/24
post-thumbnail

컴퓨터는 2진법을 사용하기 때문에 숫자나 문자등을 01로 구분해서 표현해준다.
따라서 0.1이나 0.2의 소수점의 경우 정확한 값을 표현하지 못한다.
예를 들어보자.

console.log(0.1 + 0.2);

// 출력값 : 0.30000000000000004

이와 같이 우리가 예상한 0.3과는 다른값이 출력이 된다.

부동소수점 해결방법

  1. 정수연산을 통한 값 출력
  • 소수점 값을 정확하게 출력하기 위해 정수로 변환하고 다시 그 값으로 나누는 방법.
// 정수 연산
var a = 1.5;
var b = 1.6;

console.log((a * 10 + b * 10) / 10);	// 3.1
  1. Math 사용
  • 정수형 타입으로 반환하는 방법. 정확한 소수점 값을 출력하지 않을 시

Math.ceil() - 올림
Math.floor() - 내림
Math.round() - 반올림
Math.trunc() - 버림

// 올림의 예제
var a = 1.5;
var b = 1.6;

console.log(`a : ${Math.ceil(a)}`);	   // 2
console.log(`b : ${Math.ceil(b)}`);	   // 2
  1. toFixed() 메서드 사용
  • 소수점 이하의 자릿수를 지정해서 출력해주는 방식
var a = 1.5;
var b = 1.6;
var sum = a + b;
// 소수점 1번째 자리
console.log (sum.toFixed(1))	// 3.1
// 소수점 2번째 자리
console.log (sum.toFixed(2))	// 3.10
  1. 라이브러리 사용하기
  • 라이브러리 사용을 통해 소수점계산을 정확하게 수행한다.
  • big.js, Decimal.js, math.js 등 여러 라이브러리 등이 있다.
$ npm install big.js
// ES module
const Big = require('big.js');

console.log(0.1 + 0.2 === 0.3)	// false

console.log(					// true
    new Big(0.1)
    .plus(new Big(0.2))
    .eq(0.3)
)
profile
개발자를 꿈꾸는 늙은이👨🏻‍💻

0개의 댓글