최근 쇼핑몰에서 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