
1001번의 뺄샘 이나 10998번의 곱샘은 이전 덧샘 출력과 마찬가지의 코드에서 연산자만 변경하면 쉽게 풀렸으나 나눗셈은 조금 다른점이 존재한다.
분명 A와 B는 정수를 받지만 결과는 소수점 아래의 수가 발생하기 때문에 기본적인 정수의 타입으로는 해결할 수 없다.
javascript는 따로 정수타입이 아닌 숫자의 타입을 갖기 때문에 큰 문제없이 연산자만 / 으로 바꾸어 주어도 통과된다.
const calculate = (input) => {
numberArray = input.split(" ")
const A = +numberArray[0]
const B = +numberArray[1]
console.log(A/B)
}
process.stdin.on('data',(input) => { calculate(input.toString()) })
C#의 경우 강타입의 언어이기 때문에 항상 타입을 적어줬지만, 이전 덧샘 뺄샘 곱샘의 경우 int형식의 정수의 연산에 문제가 없었더라도, 나눗셈의 경우 소수점 아래의 수가 발생할 수 있기때문에 타입을 변경해줘야 한다.
class Program{
static void Main(){
string[] inputs = Console.ReadLine().Split(" ");
int A = int.Parse(inputs[0]);
int B = int.Parse(inputs[1]);
float result = (float)A / (float)B;
Console.WriteLine(result);
}
}나는 평소에 자주 사용하는 float 타입을 사용하여 캐스팅 해 주었는데. 결과는 틀렸다는 답을 받았다. 중요한 점은 문제에서 나타낸 출력 주의사항!! 실제 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이다. 라는 부분이었다.float의 경우 소수 7번째 자리까지만 다룰 수 있기 때문에 틀렸다는 답이 돌아온다. 따라서 float이 아닌 double형식을 사용해야 한다.
class Program{
static void Main(){
string[] inputs = Console.ReadLine().Split(" ");
int A = int.Parse(inputs[0]);
int B = int.Parse(inputs[1]);
double result = (double)A / B;
Console.WriteLine(result);
}
}