예시 중 하나로 0.15*1,000,000 의 값은 150,000이고 얠 그냥 cout으로 출력해도 150,000으로 잘만 출력되는데 이 값을 int k = 0.15*1,000,000 꼴로 저장하면 k=149,999로 저장되서 계속 뭐가 꼬임. 근데 이게 0.16이나 0.17에선 또 이런 오류가 안생기니까 뭐가 문젠지 전혀 모르겠음..이거 내가 어떤 걸 잘못하고 있는거임?
(Int)((float)0.15*(float)1000000) 이렇게되서
근데 그러면 0.16이나 0.17에서도 똑같이 근삿값이 나와야 하는거 아니야?
비트 표현하기 어려운 숫자인가좌
0.15f 해봐 부동소수점오차 그나마 줄여주더라
그거 부동소수점 처리방식 때문에 생기는 문제야 비슷한 문제로 0.1+0.2 같은 문제 있을 껄 그래서 정말 중요한 연산이면 아예 부동소수점을 안쓰던가, 바이트 수를 늘리거나 정밀연산용 함수를 따로 씀