Heim > 类库下载 > 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.

高洛峰
Freigeben: 2016-10-10 11:24:15
Original
1398 Leute haben es durchsucht

Aufgrund der Genauigkeit der PHP-Gleitkommaberechnungen ist der Bestellbetrag oft 1 Cent niedriger als der Bestellbetrag

Kürzlich bin ich auf ein seltsames Problem gestoßen. Bei Bestellungen, die über WeChat im Einkaufszentrum bezahlt wurden, betrug der Betrag oft 1 Cent weniger. Nach der Untersuchung wurde es durch PHP Float verursacht. Das Problem der Punktarithmetik wird durch die Genauigkeit der PHP-Gleitkommaarithmetik verursacht. Bolg hat eine detaillierte Erklärung. http://www.laruence.com/2013/03/26/2884.html,

Wenn Dezimalzahlen im Binärformat ausgedrückt werden, ist 0,58 ein unendlicher Wert im Binärformat


In Float umwandeln Punkte (64-Bit-Doppelgenauigkeit)
0.58的二进制表示基本上(52位)是: 0010100011110101110000101000111101011100001010001111
0.57的二进制表示基本上(52位)是: 0010001111010111000010100011110101110000101000111101
Nach dem Login kopieren

0.58 -> 0.57999999999999996
0.57 -> 0.56999999999999995
Nach dem Login kopieren
Lösung:
0.58*100 = 57.999999999 
(int)(0.58*100) = 57
Nach dem Login kopieren

(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