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 函数处理浮点运算问题相关推荐

  1. php bc函数 500,PHP BC Math 函数详解

    用 PHP 计算的时候,会遇到高精度数带来的问题.好在 PHP 提供了 BC 系统函数.下面把常用的 BC 函数封装下,做了个简单的示例. [推荐教程:php视频教程] 代码实例:<?php / ...

  2. php 数学基础,PHP 基础篇 - PHP 的 BC MATH 系列数学函数

    一.常见问题 用 PHP 做计算时经常会遇到精度带来的问题,下面来看两个常见的例子: 1. 运算比较 下面表达式输出的结果不是相等: echo 2.01 - 0.01 == 2 ? '相等' : '不 ...

  3. js 的 math 函数

    之前就一直在想js的math库里到底有多少函数,然后找了红皮书,找了百度,都没有找到特别全的.后来竟然在w3school上找到了,顺便我就整理一下吧. //以下几项是输出常数,即只能拿出来用,并不能修 ...

  4. C++常用 math 函数

    C++常用 math 函数 #include <cmath> fabs(double x):取绝对值 floor(double x):向下取整 ceil(double x):向上取整 po ...

  5. Java中的Math函数常用方法都在这里

    Math函数中常用的一些方法 类Math包含用于执行基本数字运算的方法 算术运算 Math.abs(a):取a的绝对值 Math.sqrt(a):取a的平方根 Math.cbrt(a):取a的立方根 ...

  6. JavaScript之封装Math函数

    JavaScript之封装Math函数 Math 对象属性 Math 对象方法 Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin( ...

  7. JAVA Math函数向上取整和向下取整

    JAVA Math函数向上取整和向下取整, 向上取整用Math.ceil(double a) 向下取整用Math.floor(double a) 举例: double a=35; double b=2 ...

  8. Java中Math函数的用法

    相信大家在Java的学习过程中,在敲一下代码的时候,总会用到和数学有关的函数,它就是Math函数. 下面我总结了一些Math函数的用法. 本文借鉴了:https://blog.csdn.net/xue ...

  9. 用Math函数中的random随机数模拟骰子

    今天学习遇到了挺好玩的Math函数,更加坚定了我学后端的决心. 代码如下 public class TestRandom {public static void main(String[] args) ...

最新文章

  1. 全国成人计算机考试题,成人计算机考试试题.docx
  2. linux 硬盘转换gpt分区格式化吗,Linux下使用gpt给磁盘分区、格式化、挂载
  3. Java多线程:线程间通信之volatile与sychronized
  4. python commands_Windows环境下使用python的commands.getstatusoutput
  5. Digital Text Animations for Mac - 未来感活力全屏标题动画fcpx插件
  6. Android 应用开发(40)---TextView(文本框)详解
  7. 苹果修复已遭在野利用的 iOS 和 macOS 0day
  8. hp服务器 raid卡驱动安装系统,hp 服务器 linux raid驱动
  9. [教程]Web自动化测试怎么做?Web网页测试全流程解析
  10. centos7.6安装maven
  11. 【转】全套汽车标志\路牌,好不容易找到的哦!
  12. android 根据宽度调整字体大小,android根据分辨率自动调整字体大小的实例代码
  13. python3 + wxpython 实现RSA加密聊天室
  14. android 系统源码分析
  15. 著作权范围大于版权?如何进行著作权查询?
  16. 12个固态硬盘优化技巧,延长固态硬盘使用寿命
  17. pytorch torchvision.ops.roi_align
  18. 源码通透-mybatis源码分析以及整合spring过程
  19. isBlank与isEmpty的区别
  20. ​“双十一”物流大考:顺丰如何用“科技”破局?

热门文章

  1. 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结
  2. python基础数据实例_Python基本数据类型及实例详解
  3. python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)
  4. 格式化输入输出(待更新)
  5. C++:随笔7---运算符重载
  6. Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
  7. autoware框架与功能简介(一)
  8. C++中的类属(泛型)机制——模板
  9. php 空格zhuanyi,php写的将逗号、空格、回车分...-php字符转义的相关注意事项-IIS环境中防止本地用户用fsockopen进行DDOS攻击的方法_169IT.COM...
  10. python七大神级插件_IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)