💡 Round-trip conversion
포맷 A의 데이터를 포맷 B로 변환 후, 다시 본래 포맷 A로 돌아오는 과정 (Ex. double -> text -> double)
C++에서는 실수 → Text → 실수 Round-trip에서 값 손실을 막기 위해,
std::numeric_limits
클래스 멤버 상수를 활용할 수 있다.
std::numeric_limits<T>::max_digits10
- 부동 소수점 수를 10진수 문자열로 변환했다가 다시 부동 소수점 수로 변환했을 때, 원래의 부동 소수점 수와 동일하게 유지되는 최소 자릿수.
- Ex) std::numeric_limits<double>::max_digits10은 17인데,
이는 double 타입의 부동 소수점 수를 10진수 문자열로 변환했다가
다시 double로 변환했을 때, 원래의 수와 동일하게 유지되기 위해 필요한 최소 자릿수가 17자리라는 의미. (float는 9자리)
Reference