float, double
- 소수점을 표현하는 기본 타입이나 모든 소수가 float나 double로 표현될 순 없다
- 2.0 - 1.1 을 계산하면 0.8999999999 가 나오는데, 자바에선 1.1을 명확하게 표현할 수 없기 때문
- 정확한 연산을 할꺼면 BigDecimal(String) 형태를 사용하자
public static void main(String args[]) {
System.out.println(2.00 - 1.10); // 0.89999999
System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10"))); //0.90
}
long
- 64비트형 정수 타입, int는 32비트형이라 long이 범위가 더 넓은 편
- int와 더불어 사용할때 주의해야할 점이 정적 변수를 선언할때 long이면 long, int면 int로만 계산해서 선언해야 한다, 무슨소리냐면
final long MICROS_PER_DAY_1 = 24 * 60 * 60 * 1000 * 1000;
// 변수 타입은 long이라서 별일 없을거 같지만
// 곱셈 연산값들이 int형이고 연산에서 오버플로우가 발생
// 그래서 원래값보다 200배 정도 작은 값이 나온다
final long MICROS_PER_DAY_2 = 24L * 60 * 60 * 1000 * 1000;
// 적용할꺼면 연산값 타입을 동일하게 맞춰주면 된다
- 그리고 절대로 소문자 l로 쓰면 안된다.. 1이랑 구분이 거의 안됨... 타입을 쓸꺼면 대문자 L을 사용하자