Heim > php教程 > php手册 > Hauptteil

Aufgrund der Genauigkeit der PHP-Gleitkommaberechnungen liegt der Bestellwert häufig unter 1 Cent.

WBOY
Freigeben: 2016-09-05 08:45:42
Original
1626 Leute haben es durchsucht

Ich bin kürzlich auf ein seltsames Problem gestoßen, das im Einkaufszentrum über WeChat bezahlt wurde. Nach einer Untersuchung wurde festgestellt, dass es an einem Problem mit der Genauigkeit der PHP-Gleitkommaberechnung lag.

Dies liegt an der Präzision der PHP-Gleitkommazahlenoperationen. Bolg von Bruder Niao hat detaillierte Anweisungen. http://www.laruence.com/2013/03/26/2884.html,
Wenn Dezimalzahlen im Binärformat ausgedrückt werden, ist 0,58 im Binärformat ein unendlicher Wert.

0.58的二进制表示基本上(52位)是: 0010100011110101110000101000111101011100001010001111 
0.57的二进制表示基本上(52位)是: 0010001111010111000010100011110101110000101000111101
Nach dem Login kopieren

In Gleitkommazahl konvertieren (64-Bit-Doppelgenauigkeit)

0.58 -> 0.57999999999999996 
0.57 -> 0.56999999999999995
Nach dem Login kopieren
0.58*100 = 57.999999999<span style="color: #000000;"> 
(int)(</span>0.58*100) = 57 
Nach dem Login kopieren

Lösung:

(int)((0.58*1000)/10) = 58   
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage