> php教程 > php手册 > PHP 부동 소수점 계산의 정확성으로 인해 주문 금액이 1센트 미만인 경우가 많습니다.

PHP 부동 소수점 계산의 정확성으로 인해 주문 금액이 1센트 미만인 경우가 많습니다.

WBOY
풀어 주다: 2016-09-05 08:45:42
원래의
1647명이 탐색했습니다.

최근 쇼핑몰에서 WeChat을 통해 결제한 주문의 가격이 1페니 미만인 경우가 많았는데, 조사 결과 PHP 부동 소수점 계산 정확도 문제로 인해 발생하는 것으로 나타났습니다.

PHP 부동 소수점 연산의 정밀도로 인해 발생하는 문제입니다. Niao 형제의 Bolg에 자세한 지침이 있습니다. http://www.laruence.com/2013/03/26/2884.html,
십진수를 이진수로 표현하면 0.58은 이진수로 무한한 값이 됩니다.

0.58的二进制表示基本上(52位)是: 0010100011110101110000101000111101011100001010001111 
0.57的二进制表示基本上(52位)是: 0010001111010111000010100011110101110000101000111101
로그인 후 복사

부동소수점 숫자로 변환(64비트 배정밀도)

0.58 -> 0.57999999999999996 
0.57 -> 0.56999999999999995
로그인 후 복사
0.58*100 = 57.999999999<span style="color: #000000;"> 
(int)(</span>0.58*100) = 57 
로그인 후 복사

해결책:

(int)((0.58*1000)/10) = 58   
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿