Backend/Java
[Java] int, double형 계산 시 주의점
yjwoo
2023. 6. 2. 21:27
전체 코드
import java.util.Scanner;
public class Lab01 {
// 학생 자바 점수 입력받아 저장하는 메소드
static void inputScore(int[] score, Scanner scr) {
for (int i = 0; i < score.length; i++) {
System.out.print("점수>>");
score[i] = scr.nextInt();
}
}
// int[] score 배열 매개변수로 받아 평균값 반환하는 메소
static double average(int[] score) {
int sum = 0;
for (int i = 0; i < score.length; i++) {
sum += score[i];
}
return sum / score.length;
}
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
int[] score;
System.out.print("학생수>>"); // 학생 수 입력
int num = scr.nextInt();
score = new int[num];
inputScore(score, scr);
double avg = average(score);
System.out.println("평균값: " + avg);
}
}
1. 앞에 (double) 붙이고 나누기( 실수 / 정수 = 실수 )
static double average(int[] score) {
int sum = 0;
for (int i = 0; i < score.length; i++) {
sum += score[i];
}
return (double)sum / score.length;
}
결과
2. 그대로 나누기 ( 정수 / 정수 = 정수 -> 실수로 변환 )
static double average(int[] score) {
int sum = 0;
for (int i = 0; i < score.length; i++) {
sum += score[i];
}
return sum / score.length;
}
결과
- 소수점까지 정확하게 나타내야 한다면 1번 방법으로 코드 만들기!
- 단, 큰 타입의 값을 작은 타입의 값으로 변환시 데이터 손실 발생하므로 주의
예) double(8 byte) -> int(4 byte), 소수점 이하의 손실 발생