PHP 부동 소수점 계산의 정확성으로 인해 주문 금액이 주문 금액보다 1센트 적은 경우가 많습니다
최근 쇼핑몰에서 WeChat을 통해 결제한 주문이 종종 1이 되는 이상한 문제가 발생했습니다. cent less. 조사 결과, 점 연산 정밀도의 문제
는 Niao 형제의 Bolg가 자세히 설명했습니다. http://www.laruence.com/2013/03/26/2884.html,
십진수를 이진수로 표현하면 0.58은 이진수로 무한한 값이 됩니다.
0.58的二进制表示基本上(52位)是: 0010100011110101110000101000111101011100001010001111 0.57的二进制表示基本上(52位)是: 0010001111010111000010100011110101110000101000111101
float로 변환합니다. 포인트(64비트 배정밀도)
0.58 -> 0.57999999999999996 0.57 -> 0.56999999999999995
0.58*100 = 57.999999999 (int)(0.58*100) = 57
해결책:
(int)((0.58*1000)/10) = 58