<p><code>numfmt_format_currency(new NumberFormatter('en',2), 31.005, "USD")</code> 이 코드는 $31.00를 출력하지만 이 문제를 해결하려면 어떻게 해야 합니까??? 이 코드는 $31.00를 인쇄합니다. 하지만 $31.01이 출력되어야 합니다. 이 문제를 해결하는 방법? ?
PHP는 가격 형식에서 0.005에서 0.01로의 변환을 무시합니다. </p><p>Magento의 통화 형식 문제를 해결하려고 했으나 PHP에서 문제를 발견했습니다</p><p><br /></p>
31.005는 실제로 두 숫자 사이에 있습니다. https://php.net/float에서 부동 소수점 정밀도를 확인하세요.
으아아아(PHP 및 기타 언어에는 31.005라는 숫자가 없습니다..)
디스플레이 요구 사항에 맞게 충분히 정확하면서도 오류가 최소화된 숫자를 제공해야 합니다. 이는 반올림 모드를 지정하여 달성할 수 있습니다. 예를 들어 31.005를 31.01로 반올림하려는 경우 반올림 또는 반내림을 선택할 수 있습니다.
으아아아
droopsnoot님의 리뷰는 이렇습니다
숫자 서식 기본 모드 및 생성
Olivier가 댓글에서 상기시켰듯이 기본 모드는 반 짝수 반올림(뱅커 반올림이라고도 함)입니다.
또한 그들은 매직 넘버 2
을 사용하는 대신 클래스 상수 NumberFormatter::CURRENCY를 사용하는 것이 "더 형식적"일 것이라고 지적했습니다. 으아아아
이렇게 하면 코드가 더 잘 통신할 수 있습니다. 그렇지 않으면 숫자 2가 숫자의 자릿수 또는 정밀도로 해석될 수 있지만 이 경우에는 그렇지 않습니다. PHP 매뉴얼에서 모든 스타일 상수를 찾을 수 있습니다.
참고: 이것은 단지 PHP에만 국한된 문제가 아닙니다. 이 숫자를 Javascript에 전달하고 Javascript로 형식을 지정해야 할 때 동일한 문제가 발생합니다.