float의 유효 자리수는 8

|

끝. (...) 부동소수점은 항상 부정확하다는 논란이 일 수 밖에 없고, 어디에서도 정확한 부동소수점 측정을 위해서는 double이나 long double을 사용하기를 권장한다. (이것들을 사용하더라도, 정확히 원하는 소수점 이하 단위까지 딱 떨어지게 표현하는 것이 힘들긴 하다.)

참고 사이트 : http://studyfoss.egloos.com/4956717 (IEEE 754 규격의 부동 소수점 설명)

4byte 자료형이고, 1bit의 부호, 8bit의 지수, 23bit의 유효 숫자를 가지고 있다. 그러니까 유효한 자리수는 23bit. (float의 유효 숫자와는 조금 개념이 틀리기는 하지만) 23bit의 정수 범위라고 하면 unsigned라고 했을 때  8388608가 되므로 사실상 7자리도 빠듯하다. 정확히 유효한 자리라고 하면 6자리가 될듯.

참고 사이트 : http://deadfire.hihome.com/java/java14.html (자바의 float 자료형의 구조 이야기지만 IEEE 754의 규격을 따르고 있는 것으로 보인다)

그러니까 정수 부분이 100단위의 4byte 부동소수점을 사용한다면, 소수점 아래로는 4자리까지만(많이 봐줘서 5자리) 유효한 숫자가 되는 것입니다. (무조건 정확해야 한다며 부동소수점을 써야 한다는 고집을 피우는 것을 보면 때려주고 싶다;;)



And