mysql bcmod_php的bc数学函数高精度计算示例

php的bc数学函数高精度计算

bcadd — 2个任意精度数字的加法计算

bcsub — 2个任意精度数字的减法

bcmul — 2个任意精度数字乘法计算

bcdiv — 2个任意精度的数字除法计算

bcmod — 对一个任意精度数字取模

bcpow — 任意精度数字的乘方

bccomp — 比较两个任意精度的数字

bcpowmod — 将一个任意的精度数提高到另一个精度,并按指定的模数减少

bcscale — 设置所有bc数学函数的默认小数点保留位数

bcsqrt — 任意精度数字的二次方根

php的bc数学函数高精度计算示例如下:

bcadd()  加法

echo bcadd("1", "2"); // 3

echo bcadd("1", "2 "); // 1

echo bcadd("1", " 2"); // 1

$a = '1.234';

$b = '5';

echo bcadd($a, $b); // 6

echo bcadd($a, $b, 4); // 6.2340

0

1

2

3

4

5

6

7

8

echobcadd("1","2");// 3

echobcadd("1","2 ");// 1

echobcadd("1"," 2");// 1

$a='1.234';

$b='5';

echobcadd($a,$b);// 6

echobcadd($a,$b,4);// 6.2340

bcsub()  减法

$a = '1.234';

$b = '5';

echo bcsub($a, $b); // -3

echo bcsub($a, $b, 4); // -3.7660

echo bcsub('7', '5'); // 7 - 5 = '2'

echo bcsub('12', '17'); // 12 - 17 = '-5'

0

1

2

3

4

5

6

7

8

9

$a='1.234';

$b='5';

echobcsub($a,$b);// -3

echobcsub($a,$b,4);// -3.7660

echobcsub('7','5');// 7 - 5 = '2'

echobcsub('12','17');// 12 - 17 = '-5'

bcmul()  乘法

echo bcmul('1.34747474747', '35', 3); // 47.161

echo bcmul('2', '4'); // 8

$float = 0.31234144143341;

$float1 = 0.00000000000000000000000000000005;

echo $float, "\n";

//0.31234144143341

echo $float1, "\n";

//5.0E-32

echo $float*$float1, "\n";

//1.5617072071671E-32

/* bcmul将浮点数读取为字符串 */

echo bcmul($float, $float1, 32),"\n";

//0

echo bcmul($float, sprint('%.32f',$float1), 32);

//0.000000000000000000000000000000015617072071671;

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

echobcmul('1.34747474747','35',3);// 47.161

echobcmul('2','4');// 8

$float=0.31234144143341;

$float1=0.00000000000000000000000000000005;

echo$float,"\n";

//0.31234144143341

echo$float1,"\n";

//5.0E-32

echo$float*$float1,"\n";

//1.5617072071671E-32

/* bcmul将浮点数读取为字符串 */

echobcmul($float,$float1,32),"\n";

//0

echobcmul($float,sprint('%.32f',$float1),32);

//0.000000000000000000000000000000015617072071671;

bcdiv()  除法

echo bcdiv('105', '6.55957', 3); // 16.007

$result= bcdiv(89.99999999997,2.57865741235478,2);

echo "$result"; // 34.90

0

1

2

3

4

5

echobcdiv('105','6.55957',3);// 16.007

$result=bcdiv(89.99999999997,2.57865741235478,2);

echo"$result";// 34.90

bcmod()  对一个任意精度数字取模

echo bcmod('4', '2'); // 0

echo bcmod('2', '4'); // 2

echo bcmod('10', '2.1'); // 0

0

1

2

3

echobcmod('4','2');// 0

echobcmod('2','4');// 2

echobcmod('10','2.1');// 0

bcpow()  任意精度数字的乘方

返回字符串类型取模后结果,如果系数为0则返回null

echo bcpow('4.2', '3', 2); // 74.08

echo bcpow('5', '2', 2); // prints "25", not "25.00"

0

1

2

3

4

echobcpow('4.2','3',2);// 74.08

echobcpow('5','2',2);// prints "25", not "25.00"

bccomp()  比较两个任意精度的数字

如果两个数相等返回0, 左边的数left_operand比较右边的数right_operand大返回1, 否则返回-1.

echo bccomp('1', '2') . "\n"; // -1

echo bccomp('1.00001', '1', 3); // 0

echo bccomp('1.00001', '1', 5); // 1

0

1

2

3

4

echobccomp('1','2')."\n";// -1

echobccomp('1.00001','1',3);// 0

echobccomp('1.00001','1',5);// 1

bcpowmod()  将一个任意的精度数提高到另一个精度,并按指定的模数减少

返回字符串形式的结果,如果模数是O或指数是负数,则返回FALSE。

$a = bcpowmod($x, $y, $mod);

$b = bcmod(bcpow($x, $y), $mod);

// $a 和 $b 是相等的

0

1

2

3

4

5

$a=bcpowmod($x,$y,$mod);

$b=bcmod(bcpow($x,$y),$mod);

// $a 和 $b 是相等的

bcscale()  设置所有bc数学函数的默认小数点保留位数

成功时返回 TRUE, 或者在失败时返回 FALSE。

// 默认保留小数点后位数: 3

bcscale(3);

echo bcdiv('105', '6.55957'); // 16.007

// 和 bcscale() 是一样的

echo bcdiv('105', '6.55957', 3); // 16.007

// --------------------

bcscale(15);

$a=123.456;

$b=0.123;

$_ab=bcadd($a,$b);

echo $_ab;

// 123.579000000000000

$ab = (float)$_ab;

echo $ab;

// 123.579

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// 默认保留小数点后位数: 3

bcscale(3);

echobcdiv('105','6.55957');// 16.007

// 和 bcscale() 是一样的

echobcdiv('105','6.55957',3);// 16.007

// --------------------

bcscale(15);

$a=123.456;

$b=0.123;

$_ab=bcadd($a,$b);

echo$_ab;

// 123.579000000000000

$ab=(float)$_ab;

echo$ab;

// 123.579

bcsqrt()  任意精度数字的二次方根

返回二次方根的结果为字符串类型,如果操作数是负数则返回null.

echo bcsqrt('2', 3); // 1.414

0

1

2

echobcsqrt('2',3);// 1.414

php的bc数学函数高精度计算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值