Rumah > pembangunan bahagian belakang > tutorial php > php如何处理高精度计算函数

php如何处理高精度计算函数

小云云
Lepaskan: 2023-03-21 16:48:02
asal
2118 orang telah melayarinya

本文主要和大家分享php如何处理高精度计算函数,主要和大家分享图两种方法,希望能帮助到大家。

方法1:

PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述

bcadd — 加法
bccomp — 比较
bcp — 相除
bcmod — 求余数
bcmul — 乘法
bcpow — 次方
bcpowmod — 先次方然后求余数
bcscale — 给所有函数设置小数位精度
bcsqrt — 求平方根
bcsub — 减法

方法二:

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

由PHP浮点数运算精度造成的,鸟哥的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 (int)(0.58*100) = 57

解决办法: 

(int)((0.58*1000)/10) = 58
Salin selepas log masuk

相关推荐:

mysql常用日期与计算函数实例讲解

PHP概率计算函数

php计算函数执行时间的方法_PHP教程

Atas ialah kandungan terperinci php如何处理高精度计算函数. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan