本文主要是介绍用e为底来表示的浮点常量的写法与要求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
书写浮点常量有多种选择,,基本形式:包含小数点的一个带符号的数字序列,接着是字母e或E,然后是一个代表10的指数的有符号值,且必须为整数。
其中 e 或 E 被称为阶码标志,e 或 E 后面的有符号整数被称为阶码。阶码代表 10 的阶码次方。
例如:
-1.56E+12;
2.87e-3;
-8e1.0;错
浮点型常量可以省略正号,可以没有小数点或指数部分。
例如:
2E5;
19.28;
但是不能同时没有二者。
例如:
19;错
浮点型常量可以省略小数或者整数部分,但不能同时省略。
例如:
e3;错
注意:e前后的实数和整数不能省略。
-80.0e;错
注意:浮点型常量中不能有空格!例如:
3.21e -12 /* 有空格,错! */
3.14e5 /* 有空格,错! */
注意:浮点型常量有阶码的小数点前面只能有一位非0的数字。
例如:
1.81e7;//对
18.1e6;//错
另外阶码后面只能是整数,不能是整数表达式。
5.0e(1+4);//错
-------------
PHP手册里有一句话:永远不要比较两个浮点数是否相等。
计算机内部处理浮点数的方式决定了浮点数不可能100%的精确,所以在处理浮点数运算时会出现精度损失问题。比如下面这段程序:<?php $a = 15521.42; $b = 15480.3; $c = $a-$b; var_dump($c); //php4:float(41.120000000001) php5:float(41.12) var_dump($c == 41.12); //bool(false) ?>
第一条输出语句:在PHP4下输出$c可能是41.120000000001,或类似的结果,后面的1就属于精度损失的部分。在PHP5中对这个问题做了些“优化”,输出结果中不会显示不精确的部分,但同时也会让我们忽视这个问题,以为$c==41.12。
第二条输出语句:在PHP4和PHP5中都会输出false。
声明一点:这不是PHP的问题,而是计算机内部处理浮点数的问题!在C/JAVA中也会遇到同样的问题。
延伸一下:我们同样不能使用>、=或<=
这篇关于用e为底来表示的浮点常量的写法与要求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!