Heim  >  Artikel  >  php教程  >  Aufgrund der Genauigkeit der PHP-Gleitkommaberechnungen liegt der Bestellwert häufig unter 1 Cent.

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

WBOY
WBOYOriginal
2016-09-05 08:45:421623Durchsuche

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

In Gleitkommazahl konvertieren (64-Bit-Doppelgenauigkeit)

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

Lösung:

(int)((0.58*1000)/10) = 58   
Stellungnahme:
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