04:26
[익명]
자바 자료형 Float 자료형으로1.1 + 0.1 == 1.2가 부울 값으로 false를 낸다고
Float 자료형으로1.1 + 0.1 == 1.2가 부울 값으로 false를 낸다고 합니다0.1이 순환소수마냥 이진수로 변환시 순환되어서근데 float자료형에 할당되는 메모리크기가 작아 잘라내다보니 오차가 발생한다더군요같은 원리로 Double도 완전 정확하지 않을때가 있고요그래서 생각한게 정수 연산에서는 저런 오류가 발생하지 않으니까 정수연산을 long이나 double로 하는거 였습니다.근데 long 자료형으로 하기에는 값 범위가 부족하기에Double로 정수 연산하려하는데 저런 오차 없을까요?
double로 정수 연산을 해도 값이 커지면 오차 납니다. mantissa 범위를 벗어나면 그 때 부터는 오차가 난다고 보면 됩니다.
오차 없는 큰 값의 정수 연산의 경우 bigint를 써야 합니다. (정확한 이름은 언어/라이브러리마다 다른데.. 자바에선 뭐 썼나 기억이 안 나네요. 아무튼 bigint나 bignum이나 뭐 그런식의 이름이 붙습니다.)
회원가입 혹은 광고 [X]를 누르면 내용이 보입니다
회원광고