PHP学习记录(浮点型)

<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>

正则表达示如下:

浮点数:     [0-9]+
双精度型:   ([0-9][.]{LNUM}) | ({LNUM}[.][0-9]*)
指数表达式: [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

=========================
最大浮点数php代码如下:
<?php
  function float_max($mul = 2, $affine = 1) {
    $max = 1; $omax = 0;
    while((string)$max != 'INF') { $omax = $max; $max *= $mul; }

    for($i = 0; $i < $affine; $i++) {
      $pmax = 1; $max = $omax;
      while((string)$max != 'INF') {
        $omax = $max;
        $max += $pmax;
        $pmax *= $mul;
      }
    }
    return $omax;
  }
  echo "最大浮点数:" ;var_dump(float_max());
?>
=========================
结果如下(与平台相关):
最大浮点数:float(1.79769313486E+308)

关于浮点数精度的注意事项:

简单的十进制分数如同 0.1 或 0.7 在转换为内部二进制的格式会丢失精度:
例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是7.9。
就是不可能精确的用有限位数表达某些十进制分数。
例如,十进制的 1/3 变成了 0.3。
所以
1。永远不要相信浮点数结果精确到了最后一位,
2。也永远不要比较两个浮点数是否相等。
3。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。

自 PHP 5 起,如果试图将对象转换为浮点数,会发出一条 E_NOTICE 错误。

时间: 2024-11-08 19:21:58

PHP学习记录(浮点型)的相关文章

kubernetes学习记录(7)——弹性伸缩与滚动升级

kubernetes学习记录(7)--弹性伸缩与滚动升级. 弹性伸缩 弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源. Pod的弹性伸缩就是修改Replication Controller的Pod副本数.可以通过Kubectl scale命令实现. 创建Replication Controller test-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: test-rc spec: replicas: 2

js和jquery中循环的退出和继续学习记录_javascript技巧

作为水货,就是学会了1+1=3也要记录一下!错了,是2 学习记录: js中的 for(var i=1;i<5;i++){ if(i==3){ break; // 使用break,弹出2次提示分别为1,2:如果使用continue,则会弹出3次,分别是1,2,4 } alert(i); } 循环,退出循环,使用break:退出当前循环继续下一个循环,使用continue jquery中的each()方法中要实现break,使用return false:continue,使用return true

V4L2学习记录【转】

转自:http://blog.chinaunix.net/uid-30254565-id-5637600.html 4L2学习记录                                                                                                                                    这个还没有分析完,先在这放着,防止电脑坏掉丢了,以后再完善 V4L2的全称是video for linux

zookeeper学习记录三(session,watcher,persit机制)

背景 继续前面的zookeeper学习的专题,这次主要是结合项目中遇到的一些问题,进一步学习了下zookeeper的一些内部机制.   针对以下几个问题: 1. zk是否可以保证watcher事件不丢失? 2. zk的EPHEMERAL节点的自动过期时间?  3. zk的如何保证节点数据不丢失?   如果你已经非常清楚这以上的几个问题,看官们可以不用往下看了.  persit机制 zookeeper中的persit机制主要是通过本地disk进行持久化,在本地disk上会有个memory数据对象保

Android NDK学习记录

游戏项目开始转向Cocos2d-x来开发.需要用什么NDK.cygwin.硬着头皮开始学习. 下载NDK,最新版r7.解压到D:\Develop,地址如下:http://dl.google.com/android/ndk/android-ndk-r7-windows.zip 项目的native代码放在 <project>/jni/... 创建 <project>/jni/Android.mk 描述navive代码. 编译native代码: cd <project> &l

Objective-C 学习记录

Objective-C下的类定义不同于之前学过的C, C++, 他有着自己的一些标志: 1 @interface NewClassName : ParentClassName2 {3      memberDeclarations;4 }5 methodDeclarations;6 @end 结构还是比较清楚. 包围在大括号之内的就是实例变量(instance variables). Objective-C用来区分实例方法和类方法的手段就是方法定义前的标志, "-"(minus)表示是

ViewPager适配器学习记录( pageAdapter和FragmentPagerAdapter/FragmentStatePagerAdapter))

1.概述 ViewPager,顾名思义实现控件的滚动功能,是Support-v4的包中类,使用前要先导包.使用的时候跟listView有点相似,需要设置对应的适配器,通常有俩大类 [pageAdapter] [FragmentPagerAdapter/FragmentStatePagerAdapter] fragment有着自己的生命周期,谷歌官方也推荐使用ViewPage+fragment的形式,一般简单的也可以使用ViewPage+pageAdapter形式 这里用这俩种适配器来搭个框架学习

SQL学习记录

======================================================================================== ======================================================================================== 2017/09/11 一.创建表格 CREATE TABLE db(col1 textType, col2 textType, ....); P

CMake学习记录--list(列表操作命令)

CMake是一个跨平台的工程管理工具,能方便的把工程转换为vs各个版本.Borland Makefiles.MSSYS Makefiles.NMake Makefiles等工程,对于经常在不同IDE下使用管理同一个工程提供了很大的便利.自己把使用过程中的点点滴滴记录下来. list 列表操作命令. 1. list(LENGTH <list> <output variable>) 2. list(GET <list> <element index> [<