整理php的bcmath高精度计算函数:加法、减法、乘法、除法

Php 专栏收录该内容
391 篇文章 2 订阅

BCMath 任意精度数学

简介

对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1)

安装/配置

需求

自 PHP 4.0.4,libbcmath 随同 PHP 一起发布。该扩展不需要任何外部的库。

安装

本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

运行时配置

这些函数的行为受 php.ini 中的设置影响。
在这里插入图片描述

BC 数学 函数

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

说明:左操作数和右操作数求和

bcadd ( string $left_operand , string $right_operand [, int $scale ] ) : string

参数:

left_operand 左操作数,字符串类型
right_operand 右操作数,字符串类型
scale 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。

返回值

2个操作数求和之后的结果以字符串返回

实例代码:


<?php

$qipa=250;
$xiaoqipa=2.50;
echo bcadd($qipa,$xiaoqipa);
echo "<br>";
echo bcadd($qipa,$xiaoqipa,2);

?>

结果展示:
在这里插入图片描述

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

说明

把right_operand和left_operand作比较, 并且返回一个整数的结果.
bccomp ( string $left_operand , string $right_operand [, int $scale = int ] ) : int

参数

left_operand 左边的运算数, 是一个字符串.
right_operand 右边的运算数, 是一个字符串.
scale 可选的scale参数被用作设置指示数字, 在使用来作比较的小数点部分.

返回值

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

示例代码

echo bccomp('1', '2') . "\n";   // -1
echo "<hr>";
echo bccomp('1.00001', '1', 3); // 0
echo "<hr>";
echo bccomp('1.00001', '1', 5); // 1

结果显示
在这里插入图片描述

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

说明

左操作数除以右操作数
bcdiv ( string $left_operand , string $right_operand [, int $scale = int ] ) : string

参数

left_operand 左操作数,字符串类型
right_operand 右操作数,字符串类型
scale 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。

返回值

返回结果为字符串类型的结果,如果右操作数是0结果为null

示例代码

echo bcdiv('1', '3', 3);  // 0.333
echo "<hr>";
echo bcdiv('105', '6.55957', 3);  // 16.007
echo "<hr>";
echo bcdiv('105', '6.55957', 4);  // 16.0071

结果展示

在这里插入图片描述

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

说明

对左操作数使用系数取模
bcmod ( string $left_operand , string $modulus ) : string

参数

left_operand 字符串类型的左操作数
modulus 字符串类型系数

返回值

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

示例代码

echo bcmod('4', '2'); // 0
echo "<hr>";
echo bcmod('2', '4'); // 2

结果展示

在这里插入图片描述

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

说明

bcmul ( string $left_operand , string $right_operand [, int $scale = int ] ) : string
左操作数乘以右操作数

参数

left_operand字符串类型的左操作数.
right_operand 字符串类型的右操作数.
scale 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。

返回值

返回结果为字符串类型.

示例代码

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


echo 'qipa250原值:'.$qipa250=2.28;
echo "<hr>";
echo '直接相乘:'.$haoqipa=$qipa250*100;
echo "<hr>";
echo '相乘后转int:'.(int)$haoqipa;
echo "<hr>";
echo '使用函数:'.bcmul($qipa250, '100'); // 8
echo "<hr>";


结果展示

在这里插入图片描述

bcpow — 任意精度数字的乘方

说明

bcpow ( string $left_operand , string $right_operand [, int $scale ] ) : string
左操作数的右操作数次方运算.

参数

left_operand 字符串类型的左操作数.
right_operand 字符串类型的右操作数.
scale 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。

返回值

返回结果为字符串类型.

示例代码

echo bcpow('4.2', '3', 2); // 74.08
echo "<hr>";
echo bcpow('2', '3', 2); // 8


结果展示
在这里插入图片描述

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

说明

bcsub ( string $left_operand , string $right_operand [, int $scale = int ] ) : string
左操作数减去右操作数.

参数

left_operand 字符串类型的左操作数.
right_operand 字符串类型的右操作数.
scale 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。

返回值

返回减法之后结果为字符串类型

示例代码

$a = '1.234';
$b = '5';

echo bcsub($b, $a);     // 3
echo "<hr>";
echo bcsub($b, $a,3);     // 3.766
echo "<hr>";
echo bcsub($a, $b);     // -3
echo "<hr>";
echo bcsub($a, $b, 4);  // -3.7660

结果展示
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值