当前位置: 首页 > news >正文

php 小数计算 结果变无限小数解决方案

php 小数计算 结果变无限小数解决方案

  • 示例
  • 解决方案用更高精度的函数计算
    • bcadd — 两个任意精度数字的加法计算
    • bcsub — 两个任意精度数字的减法
    • bcmul — 两个任意精度数字乘法计算
    • bcdiv — 两个任意精度的数字除法计算
    • bccomp — 比较两个任意精度的数字
    • bcmod — 任意精度数字取模
    • bcpow — 任意精度数字的乘方
    • bcsqrt — 任意精度数字的二次方根
    • bcpowmod — 用于将任意精度的基数提高到另一个按指定模数减少的指数

示例

$a = 1; $b = 3 ;$c = 2.3
$a *$b *$c 的结果可能变成 6.8999999999999995

解决方案用更高精度的函数计算

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

//对 $num1 和 $num2 求和。

bcadd($num1, $num2, $scale)

//参数
//$num1
//左操作数,字符串类型。

//$num2
//右操作数,字符串类型。

//$scale
//设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//以字符串返回两个操作数求和之后的结果。

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

//$num1 减去 $num2。

bcsub($num1, $num2, $scale)

//参数
//$num1
//字符串类型的左操作数。

//$num2
//字符串类型的右操作数。

//$scale
//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//以 string 类型返回减法之后的结果。

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

//≈num1 乘以 $num2。

bcmul($num1, $num2, $scale)

//参数
//$num1
//字符串类型的左操作数。

//$num2
//字符串类型的右操作数。

//$scale
//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//返回字符串类型的结果。

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

//$num1 除以 $num2。

bcdiv($num1, $num2, $scale)

//参数
//$num1
//被除数,字符串类型。

//$num2
//除数,字符串类型。

//$scale
//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//返回字符串类型的结果。如果 $num2 是 0 结果为 null。

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

//比较 num1 和 num2, 并且返回整型数字的结果。

bccomp($num1, $num2, $scale)

//参数
//$num1
//左边的运算数,是一个字符串。

//$num2
//右边的运算数,是一个字符串。

//$scale
//可选的 scale 参数被用作设置指示数字, 在使用来作比较的小数点部分。

//返回值
//两个数相等时返回 0; $num1 比 $num2 大时返回 1; 其他则返回 -1。

bcmod — 任意精度数字取模

//对 $num1 使用 $num2 取模。 除非 $num2 是零,否则结果必定和 $num1 有相同的符号。

bcmod($num1, $num2)

//参数
//$num1
//string 类型的被除数。

//$num2
//string 类型的除数。

//返回值
//返回字符串类型取模后的结果,如果 $num2 为 0 则返回 null。

bcpow — 任意精度数字的乘方

//$num 的 $exponent 次方运算。

bcpow($num, $exponent, $scale)

//参数
//$num
//string 类型的底数。

//$exponent
//string 类型的指数。 如果指数不是整数,将被截断。 指数的有效范围取决于平台,但起码支持 -2147483648 到 2147483647 的范围。

//$scale
//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//返回字符串类型的结果。

## bcscale — 设置/获取所有 bc math 函数的默认小数点保留位数

```php

//设置所有 bc math 函数在未设定情况下的小数点保留位数。
bcscale(int $scale)

//获取当前的小数点保留位数。
bcscale(null $scale = null)


//参数
//$scale
//小数点保留位数。

//返回值
//设置的时候,返回之前的小数点保留位数。否则就是返回当前的位数。

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

//返回 $num 的二次方根。

bcsqrt($num, $scale)

//参数
//$num
//字符串类型的操作数。

//$scale
//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。

//返回值
//以 string 类型返回二次方根的结果,如果 num 是负数则返回 null。

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

//此函数接受三个任意精度的数字作为字符串,并在将结果缩放到指定的精度后返回以数字为底的指数模的基数。

bcpowmod ( $base, $exponent, $mod, $scale)

//$base:此参数为字符串类型,表示左操作数或数字(即增加幂的基础)。此参数是必需的。
//$exponent:此参数是字符串类型,代表右操作数或代表指数的数字之一。此参数是必需的。
//$mod:此参数为字符串类型,并且接受表示模数的操作数或数字。此参数是必需的。
//$scale:此参数为int类型,是可选的。该参数表示(base)结果中小数点后出现的位数exponent)%mod。默认值为零。

## 
## 
## 

相关文章:

  • WebRTC研究:丢包与抖动
  • freeswitch的3XX重定向
  • jsp+sql毕业生招聘系统免费系统+论文
  • Java毕业设计-火车订票管理系统
  • SwiftUI 界面状态 成员变量 @State @Buiding immutable
  • Java 进阶集合和数据结构
  • RabbitMQ、RocketMQ、Kafka常见消息队列不得不知道的事
  • 简单工厂模式、工厂模式、抽象工厂模式(含C++代码)
  • 自动化测试之路 —— Appium输入及模拟手势
  • 使用聚类(K-means)分析方法对骑手进行分类标签定义
  • Z-Score模型的进阶版:Zeta模型
  • 从零开始配置vim(20)——模糊查询
  • 【CSAPP】现代操作系统前几章
  • React全家桶
  • 聊一聊密钥交换
  • 自己简单写的 事件订阅机制
  • C# 免费离线人脸识别 2.0 Demo
  • es6
  • mysql常用命令汇总
  • SpringBoot 实战 (三) | 配置文件详解
  • 百度小程序遇到的问题
  • 规范化安全开发 KOA 手脚架
  • 聊聊flink的BlobWriter
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小而合理的前端理论:rscss和rsjs
  • 一道面试题引发的“血案”
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Java基础复习笔记 第16章:网络编程
  • # Apache SeaTunnel 究竟是什么?
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (175)FPGA门控时钟技术
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)visual stdio 书签功能介绍
  • .“空心村”成因分析及解决对策122344
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net对接阿里云CSB服务
  • .net网站发布-允许更新此预编译站点
  • .NET业务框架的构建
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ACM] hdu 1201 18岁生日
  • [C++] sqlite3_get_table 的使用
  • [cogs2652]秘术「天文密葬法」
  • [FxCop.设计规则]8. 也许参数类型应该是基类型