PHP使用BC Math 函数处理浮点运算问题
BC Math 函数
http://cn.php.net/manual/zh/ref.bc.php
首先看一段代码:
<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);
打印出来的值居然为 boolean false
这是为啥?PHP手册对于浮点数有以下警告信息:
Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数
那么上面的算式我们应该改写为
<?php
$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);
这样就能解决浮点数的计算问题了
PHP使用BC Math 函数处理浮点运算问题相关推荐
- php bc函数 500,PHP BC Math 函数详解
用 PHP 计算的时候,会遇到高精度数带来的问题.好在 PHP 提供了 BC 系统函数.下面把常用的 BC 函数封装下,做了个简单的示例. [推荐教程:php视频教程] 代码实例:<?php / ...
- php 数学基础,PHP 基础篇 - PHP 的 BC MATH 系列数学函数
一.常见问题 用 PHP 做计算时经常会遇到精度带来的问题,下面来看两个常见的例子: 1. 运算比较 下面表达式输出的结果不是相等: echo 2.01 - 0.01 == 2 ? '相等' : '不 ...
- js 的 math 函数
之前就一直在想js的math库里到底有多少函数,然后找了红皮书,找了百度,都没有找到特别全的.后来竟然在w3school上找到了,顺便我就整理一下吧. //以下几项是输出常数,即只能拿出来用,并不能修 ...
- C++常用 math 函数
C++常用 math 函数 #include <cmath> fabs(double x):取绝对值 floor(double x):向下取整 ceil(double x):向上取整 po ...
- Java中的Math函数常用方法都在这里
Math函数中常用的一些方法 类Math包含用于执行基本数字运算的方法 算术运算 Math.abs(a):取a的绝对值 Math.sqrt(a):取a的平方根 Math.cbrt(a):取a的立方根 ...
- JavaScript之封装Math函数
JavaScript之封装Math函数 Math 对象属性 Math 对象方法 Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin( ...
- JAVA Math函数向上取整和向下取整
JAVA Math函数向上取整和向下取整, 向上取整用Math.ceil(double a) 向下取整用Math.floor(double a) 举例: double a=35; double b=2 ...
- Java中Math函数的用法
相信大家在Java的学习过程中,在敲一下代码的时候,总会用到和数学有关的函数,它就是Math函数. 下面我总结了一些Math函数的用法. 本文借鉴了:https://blog.csdn.net/xue ...
- 用Math函数中的random随机数模拟骰子
今天学习遇到了挺好玩的Math函数,更加坚定了我学后端的决心. 代码如下 public class TestRandom {public static void main(String[] args) ...
最新文章
- 全国成人计算机考试题,成人计算机考试试题.docx
- linux 硬盘转换gpt分区格式化吗,Linux下使用gpt给磁盘分区、格式化、挂载
- Java多线程:线程间通信之volatile与sychronized
- python commands_Windows环境下使用python的commands.getstatusoutput
- Digital Text Animations for Mac - 未来感活力全屏标题动画fcpx插件
- Android 应用开发(40)---TextView(文本框)详解
- 苹果修复已遭在野利用的 iOS 和 macOS 0day
- hp服务器 raid卡驱动安装系统,hp 服务器 linux raid驱动
- [教程]Web自动化测试怎么做?Web网页测试全流程解析
- centos7.6安装maven
- 【转】全套汽车标志\路牌,好不容易找到的哦!
- android 根据宽度调整字体大小,android根据分辨率自动调整字体大小的实例代码
- python3 + wxpython 实现RSA加密聊天室
- android 系统源码分析
- 著作权范围大于版权?如何进行著作权查询?
- 12个固态硬盘优化技巧,延长固态硬盘使用寿命
- pytorch torchvision.ops.roi_align
- 源码通透-mybatis源码分析以及整合spring过程
- isBlank与isEmpty的区别
- ​“双十一”物流大考:顺丰如何用“科技”破局?
热门文章
- 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结
- python基础数据实例_Python基本数据类型及实例详解
- python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)
- 格式化输入输出(待更新)
- C++:随笔7---运算符重载
- Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
- autoware框架与功能简介(一)
- C++中的类属(泛型)机制——模板
- php 空格zhuanyi,php写的将逗号、空格、回车分...-php字符转义的相关注意事项-IIS环境中防止本地用户用fsockopen进行DDOS攻击的方法_169IT.COM...
- python七大神级插件_IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)