Float를 Double로 변환할 때 정밀도 유지
기본 float를 기본 double로 변환할 때 다음과 같은 이유로 정밀도에 불일치가 발생할 수 있습니다. 부동 소수점 연산의 고유한 특성. 단순히 float를 double로 캐스팅하면 제공된 코드에서 볼 수 있듯이 원치 않는 반올림 오류가 발생할 수 있습니다.
<code class="java">float temp = 14009.35F; System.out.println(Float.toString(temp)); // Prints 14009.35 System.out.println(Double.toString((double)temp)); // Prints 14009.349609375</code>
그러나 float를 문자열로 변환한 다음 다시 double로 구문 분석하면 원하는 정밀도가 생성됩니다.
<code class="java">System.out.println(Double.toString(Double.parseDouble(Float.toString(temp)))); // Prints 14009.35</code>
float에서 double로의 직접 캐스트에서 표면적으로 정밀도가 더 높아진 것처럼 보이지만 실제로는 정확성이 향상되지 않는다는 점에 유의하는 것이 중요합니다. 이중 표현은 float 값의 고유 정밀도를 정확하게 반영합니다. 문자열로 변환한 후 다시 역으로 변환하면 표현이 단순화되어 원래 float보다 문자열 표현에 더 가까운 double 값이 생성됩니다.
이 해결 방법을 사용하기 전에 float 및 double 데이터 유형 사용의 적절성을 고려하세요. 금융 또는 과학 응용 분야에서와 같이 정확한 소수 값이 중요한 경우 소수 계산에 대한 더 높은 정밀도와 제어 기능을 제공하는 BigDecimal이 더 적합한 유형으로 권장됩니다.
위 내용은 부동 소수점을 Double로 변환하면 정밀도가 떨어지는 이유는 무엇이며 정확도를 유지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!