본문 바로가기

Languages

0.1+0.2? 부동소수점의 정밀도 문제...

전에 자바스크립트 책을 읽다가 부동소수점의 경우 연산의 결과가 원하는 결과랑 다를 수 있으므로 통화와 같이 민감한 데이터는 정수형으로 고쳐서 만들라는 팁을 읽을 적이 있었다.


자바스크립트

> (0.1 + 0.2)

0.30000000000000004

0.3이 아니구나!!


C언어

double d1 = 0.1;

double d2 = 0.2;

double d3 = 0.3;


printf("%f + %f => %f\n", d1, d2,(d1+d2));

printf("%d\n", (d1+d2 == d3));


결과

0.100000 + 0.200000 => 0.300000

0


자바

public class Addtion {


public static void main(String[] args) {

System.out.println( 0.1 + 0.2 == 0.3 );

}


}

결과

false


그래서 jUnit에 소수 비교에 3번째 인자가 존재하는 구나.

사실 gtest에도 마찬가지 정밀도 인자가 있다.


'Languages' 카테고리의 다른 글

[Kotlin] switch to when with enum  (0) 2021.10.01
TL; DR 이란?  (0) 2018.10.04
[파이썬] cgi on IIS  (0) 2015.01.15