Heim > 类库下载 > PHP类库 > Hauptteil

PHP浮点数运算精度造成的,订单金额支付经常少1分的问题

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

PHP浮点数运算精度造成的,订单金额支付经常少1分的问题

最近碰见一个奇怪的问题,商城通过微信支付的订单经常少一分钱,经过排查是PHP浮点运算精度问题造成的

由PHP浮点数运算精度造成的,鸟哥的Bolg有详细的说明。http://www.laruence.com/2013/03/26/2884.html, 
小数在二进制表示时,0.58对于二进制,是无限长的值

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

转换成浮点数(64位双精度)

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

解决办法:

(int)((0.58*1000)/10) = 58
Nach dem Login kopieren

1.png

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!