Today I Learned
오늘 한 일
Epsilon, Number Digit 등 컴퓨터에서 실수를 표현하는 방식과 상대오차에 대해서 깊게 배웠다.
실수형의 논리비교를 위한 is_equal 함수를 만들었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function is_equal(x, y, allowed=0){
// 둘 중 큰 수의 다음 숫자와의 오차의 allowed 배 정도 되는 범위 안에 있으면 같다고 판단한다.
return (Math.abs(x-y) <= Math.max(Math.abs(x), Math.abs(y))*Number.EPSILON*Math.pow(2, allowed));
}
function main(){
var sum = 0;
for(var i =0; i< 100; i++){
sum += 0.01;
}
if(is_equal(sum, 1.0, 2)){
console.log("THE SAME");
} else{
console.log("NOT THE SAME");
}
}Python을 배우는데 너무 재미있다. 익숙하지 않아 찾아보는 것이 번거롭지만 문법이나 기능이 흥미롭다.