개발일지/Java + Spring
[java] float, double 계산 후 소수점까지 출력
연습용365
2021. 9. 17. 09:00
<잘못된 예제>
import java.util.Scanner;
public class SungJuk {
public static void main(String[] args) {
int sum = 0;
float avg = 0f;
Scanner sc = new Scanner(System.in);
System.out.print("국어 성적을 입력하세요 : ");
int kor = sc.nextInt();
System.out.print("수학 성적을 입력하세요 : ");
int mat = sc.nextInt();
sum = kor + mat;
avg = sum/2;
System.out.println("합 계 : " + sum + "점 입니다.");
System.out.println("평 균 : " + avg + "점 입니다.");
}
}
이렇게 출력을 하면 출력 할 때에는 소수점 뒷자리가 싹 날아가고 계속 n.0으로만 출력이 된다. 변수 선언 할 때 float 값에 0f도 해줬는데 왜!
import java.util.Scanner;
public class SungJuk {
public static void main(String[] args) {
int sum = 0;
float avg = 0f;
Scanner sc = new Scanner(System.in);
System.out.print("국어 성적을 입력하세요 : ");
int kor = sc.nextInt();
System.out.print("수학 성적을 입력하세요 : ");
int mat = sc.nextInt();
sum = kor + mat;
avg = sum/2.0f;
System.out.println("합 계 : " + sum + "점 입니다.");
System.out.println("평 균 : " + avg + "점 입니다.");
}
}
이유는 아래의 avg 변수에서 sum/2가 아니라 sum/2.0f를 해줘야 한다는 것! 또는 sum/2f를 해줘도 된다. 다만 f는 빼면 안 된다.
import java.util.Scanner;
public class SungJuk {
public static void main(String[] args) {
int sum = 0;
double avg = 0;
Scanner sc = new Scanner(System.in);
System.out.print("국어 성적을 입력하세요 : ");
int kor = sc.nextInt();
System.out.print("수학 성적을 입력하세요 : ");
int mat = sc.nextInt();
sum = kor + mat;
avg = sum/2.0;
System.out.println("합 계 : " + sum + "점 입니다.");
System.out.println("평 균 : " + avg + "점 입니다.");
}
}
더블로 바꿨을 때는 이렇다. 더블은 기본 데이터 타입이라서 d가 생략 되어도 된다.