laravel 또는 php (아직 모르겠 음)에 문제가 있습니다. 문제는 다음입니다.
debe
아래에서 볼 수 있듯이 데이터베이스 에 값이 3.97 인 필드 가 있습니다. 이 필드는 double(11,2)
.
예를 들어 프레임 워크에서 해당 필드에 액세스하면 dd()
아래에서 볼 수 있듯이 값이 올바르게 반환됩니다.
주요 문제는 뷰에 인쇄하려고 할 때 발생하며 다음 메시지가 나타납니다.
왜 이런 일이 발생하는지 모르겠지만 지금 내가 찾은 유일한 해결책은 PHP round()
함수를 사용하여 값을 반올림하는 것입니다.
문안 인사
공식 문서 에서이 기사를 확인하십시오 .
부동 소수점 숫자는 정밀도가 제한됩니다. 시스템에 따라 다르지만 PHP는 일반적으로 IEEE 754 배정 밀도 형식을 사용하며, 이는 1.11e-16 순서로 반올림으로 인해 최대 상대 오류를 제공합니다. 기본이 아닌 산술 연산은 더 큰 오류를 제공 할 수 있으며, 물론 여러 연산이 복합 될 때 오류 전파를 고려해야합니다.
또한 0.1 또는 0.7과 같이 10 진수의 부동 소수점 숫자로 정확하게 표현할 수있는 유리수는 가수의 크기에 관계없이 내부적으로 사용되는 2 진법의 부동 소수점 숫자로 정확하게 표현되지 않습니다. 따라서 약간의 정밀도 손실 없이는 내부 바이너리로 변환 할 수 없습니다. 이로 인해 혼란스러운 결과가 발생할 수 있습니다. 예를 들어, floor ((0.1 + 0.7) * 10)은 일반적으로 예상되는 8 대신 7을 반환합니다. 내부 표현은 7.9999999999999991118 ....과 같기 때문입니다.
따라서 부동 숫자 결과를 마지막 숫자로 신뢰하지 말고 부동 소수점 숫자를 직접 비교하지 마십시오. 더 높은 정밀도가 필요한 경우 임의 정밀도 수학 함수와 gmp 함수를 사용할 수 있습니다.
round
또는 number_format
함수를 사용 하여 원하는 소수를 얻을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다