문제 정의
해결하면서 생각한 내용
그렇기 때문에 배열을 통해서 구현을 하면 매분마다 계산을 해야하기 때문에 오랜 시간이 걸릴 것이라고 판단하여 2개의 변수로 계산
function calcAverage(sumTemps:number, counter:number) {
return (sumTemps / counter);
}
const DECIMAL = 2;
const MINUTE = 1000 * 60;
const init = (decimal: number) => {
let sumTemps = 0;
let counterOfTemps = 0;
return (temp: number) => {
try {
sumTemps += temp;
counterOfTemps += 1;
return calcAverage(sumTemps,counterOfTemps).toFixed(decimal);
} catch(error) {
console.error(error);
return 0;
}
}
}
const getAverage = init(DECIMAL);
setInterval(() => {
// currentTemp가 일정하게 넘어온다고 가정
let currentTemp = 0;
console.log(getAverage(current))
}, MINUTE);
계속해서 변수에 저장을 하면 변수를 저장할 수 있는 최대 범위가 넘어가서 에러가 발생할 것이다. 따라서 이에 따른 조치를 취해야 한다. 그런데 에러가 발생하면 어떻게 하라는 내용이 없어서 그냥 처음부터 다시 실행하도록 작성했다.
function calcAverage(sumTemps:number, counter:number) {
return (sumTemps / counter);
}
const DECIMAL = 2;
const MINUTE = 1000 * 60;
const init = (decimal: number) => {
let sumTemps = 0;
let counterOfTemps = 0;
return (temp: number) => {
sumTemps += temp;
counterOfTemps += 1;
return calcAverage(sumTemps,counterOfTemps).toFixed(decimal);
}
}
function start() {
const getAverage = init(DECIMAL);
let interval = setInterval(() => {
// currentTemp가 일정하게 넘어온다고 가정
let currentTemp = 0;
try {
console.log(getAverage(currentTemp));
} catch(error) {
console.error(error);
clearInterval(interval);
start();
}
},MINUTE);
}
start();
function calcAverage(sumTemps:number, counter:number) {
return (sumTemps / counter);
}
const DECIMAL_PLACE = 2;
const INTERVAL_TIME = 1000 * 60;
const init = (decimal: number) => {
let sumTemperatures = 0;
let counterOfTemperatures = 0;
return (temp: number) => {
sumTemperatures += temp;
counterOfTemperatures += 1;
return calcAverage(sumTemperatures,counterOfTemperatures).toFixed(decimal);
}
}
function start() {
const getAverage = init(DECIMAL_PLACE);
let interval = setInterval(() => {
// currentTemp가 일정하게 넘어온다고 가정
let currentTemp = 0;
try {
console.log(getAverage(currentTemp));
} catch(error) {
console.error(error);
clearInterval(interval);
start();
}
},INTERVAL_TIME);
}
start();