이문제에서 형변환 말인데요

portishead Reply 9 years 8 weeks ago
import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner input = new Scanner(System.in); double r = input.nextDouble(); double s = 2 * r * Math.sin(Math.PI/5); double Area = 5 * Math.pow(s, 2)/(4*Math.tan(Math.PI/5)); System.out.println("Area(not round) = "+Area); Area = Math.round(100*Area)/100.0; System.out.println(Area); } } 1. Area = Math.round(100*Area)/100.0; 2. Area = Math.round(100*Area)/100; 저는 처음에 2로 썼거든요? 왜냐하면 Area는 더블형 변수이고 정수 100곱해도 어차피 더블형으로 자동형변환되니까 Math.round의 값도 더블형일것이고, 정수 100으로 나누어도 둘다 더블형으로 바뀌어서(자동형변환)되니까 다시 예를들면 Math.round안 Area의 값이 79.256 이라면 새로 초기화된 Area는 79.27일줄 알았는데 79.0가 나오더군요 대신에 1번처럼 100.0으로 정수`100이 아닌 실수 100으로 나눠주니 제대로 답을 출력했습니다. 제가 알기로 실수형/정수형 -> 실수형/실수형 으로 자동 형 변환 되는줄 알알았는데 아닌가요? 제가 뭔가 잘못하고 있는 걸까요?
withcs Reply 9 years 8 weeks ago
실험해본 결과 Math.round()함수는 정수형을 리턴하는것 같습니다. 그러니 정수/정수꼴이 되어서 정수값이 나오는거죠.