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