当前位置:首页 » php学习笔记 » php--浮点类型以及误差

php--浮点类型以及误差

原创 stpevenchow 13°c 2019年11月13日 23:56 php学习笔记 0条评论
  移步手机端

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

<?php

浮点类型

1,有效数字,只针对浮点类型而言

左起第一个非零得数字开始计算,php最多支持14位有效数字

超出14位的部分,在小数部分

最多显示14位有效数字,第15位四舍五入

 $float = 13213456465464.163464;

echo $float;

$float2 = 123456.15646546565;

echo float2, '<br>';

有效数字超出部分在整数部分,不会只显示十四位

会转化为科学技术法显示

 $float3 = 456132165451324165.123;

echo float3, '<br>';

科学技术法

基本语法

数字1e+ / -数字2

一般如果是正号 + 会忽略

表示的数字是

 +

数字1 * 10数字2次方

特别注意:科学技术法,第二个数值,也就是表示10的N次方的数值,不能是小数,只能是整数

数字1 / 10数字2次方

例如:

2e32 * 10的3次方2000

2e-32 / 10的3次方0.002

$float4 = 2e3;

echo $float4, '<br>';
输出结果为2000

 $float = 2e-3;

echo $float5 . '<br>';
输出结果为0.002

浮点数的溢出

数据类型仍然是float浮点类型,数值变为inf无穷大

大于最大值,小于最小值

 $float7 = 2e310;

echo $float7, '<br>';
输出结果为INF

 $float8 = -2e310;

echo $float8, '<br>';
输出结果为 - INF;

浮点数的误差

浮点数在php程序中会以特殊的方式存储,存储数据可以非常大,同时存储的数值会存在误差

php程序中,如果浮点数直接参与计算或者比较判断等,一定会出现误差的情况,只是误差在一般情况下不会体现,只有在特殊的情况下才会体现

float9 = 0.7 + 0.1;

echo $float9;
输出结果为0.8

特殊情况

== 进行等于判断,判断两端的数值是否相等

0.1 + 0.7等于0.8,0.8 * 10应该等于8,此处的判断结果应该是true,因为浮点数在特殊情况下产生了误差,导致判断结果为false, 出现错误

 $float9 = (0.1 + 0.7) * 10 == 8;

var_dump($float9);
打印结果为false;

误差2

intval()获取数据的整数部分,没有四舍五入

0.57 * 100结果应该是57取整数部分应该为57,结果为56

echo intval(0.57 * 100);

0.58 * 100结果应该是58取证数部分应该为58,结果为57

echo intval(0.58 * 100);

总结:浮点数直接参与运算或者比较判断,一定会有误差,只有一般情况下不会体现,只有特殊情况才会体现



欢迎阅读本文,如果本文对您有所帮助,记得收藏/转发☺

本文链接:http://stpeven.com/post/169.html

版权声明:本文为原创文章,版权归 stpevenchow 所有,欢迎分享本文,转载请保留出处!

本文标签:

三人行,必有我师

评论(0)

发表评论:


【顶】 【踩】 【好】 【懵】 【赞】 【表情】

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

推荐阅读
11月25日

php--学习乘方运算,幂运算,哈希散列值,随机数

发布 : | 分类 : php学习笔记 | 评论 : 0人 | 浏览 : 6次
php--学习乘方运算,幂运算,哈希散列值,随机数

<?php学习乘方运算,幂运算,哈希散列值,随机数1,乘方函数,幂函数pow()echo pow('2a', '3a');2的3次方也就是3个2相乘第二个参数,也就是乘方,此处可以为小数参数理论上应该是数字类型,如果是其它类型,会自动转化为数字类型2,求平方根函数sqrt()负数没有平方根,如果参数是负数,返回值为NAN, 表示不存在echo sqrt(9);3,求绝对值函数abs()正数的绝对是其本身,负数的绝对值是正数,0的绝对值是0echo abs(-...

标签 :
11月24日

php--变量检查2

发布 : | 分类 : php学习笔记 | 评论 : 0人 | 浏览 : 7次
php--变量检查2

<?php1, 检查变量是否是null有3种判断方式is_null()isset()empty()首先先说is_null得判断范围1、未定义的变量 $var = '';var_dump(is_null($var));变量不存在,会报错,返回值为true    2、定义未赋值的变量     $int;var_dump(is_null($int));3、被销毁的变量4、赋值为null的变量 ...

标签 :
11月22日

php--变量检查

发布 : | 分类 : php学习笔记 | 评论 : 0人 | 浏览 : 8次
php--变量检查

<?php// 特点:// 1,都只能有一个参数// 2,根据检查类型,符合的返回true,不符合返回false// 1,检查是否是整数 is_int()// 检查变量,如果存储数据为整数,返回true// 检查变量,如果存储数据不是整数,返回false$var = 'abc';var_dump(is_int($var));// 2,检查是否是浮点数 is_float()$var = 1000;var_dump(is_float($var));// 3,检查是否是数值 is...

标签 :
11月21日

php--常量

发布 : | 分类 : php学习笔记 | 评论 : 0人 | 浏览 : 9次
php--常量

 <?php常量通过define()函数来自定义常量参数:1,定义得常量名称,需要时字符串格式2,定义得常量数值,数值必须是标量类型3,第三个参数,不使用如果需要对自定义常量进行数据修改,只能在第一次定义得define()函数中,对定义得数据进行修改define('rm', 15);echo rm;输出结果是15 $int = rmvar_dump($int);输出结果int(15)问题1,不能对常量进行赋值或者修改2,也不能对同一个自定义常量进行多次定...

标签 :
11月20日

php--其它类型转化为数字

发布 : | 分类 : php学习笔记 | 评论 : 0人 | 浏览 : 9次
php--其它类型转化为数字

<?php/*其它类型转化为数字多出现于计算boolean true     1false    0字符串:从字符串左侧起,只转化符合数学形式的部分1, null --- 0*//*$int = 100 + null;echo $int; 输出结果为:1002、true ---1 false ---0*//*$int = 100 + true;echo $int; 输出结果101$int = 100 + false;ec...

标签 :