php比较浮点数
① php怎么判断一个浮点数是 0.1的倍数
if(i % 10 == 0){
alert(i + "是10的倍数");
}
② php中比较两个数大小的内置函数是什么
函数描述:mixed max(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此数组中的最大值,若参数中有浮点数,则所有参数转化成浮点数,
返回值也为浮点数;否则所有参数转化成整数,返回值为整数。
函数描述:mixed min(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此数组中的最小值,若参数中有浮点数,则所有参数转化成浮点数,
返回值也为浮点数;否则所有参数转化成整数,返回值为整数。
③ PHP 的浮点型计算如何保证准确度
计算机里面,一律只保留小数点后面14位,无论是否循环不循环,如果没那么多位就添0,如果超过了就四舍五入。
④ 在php语言中,两个浮点数float怎样比较大小
浮点数判断需要注意,float
和double
的精度范围,超过范围的数字会被忽略
(1)
浮点数大小判断
如果没有等号关系在里面,也就必然一大一小,那么直接用
>
或者
<
(2)
浮点数相等判断
因为
浮点数在内存中存放,可能无法精确的储存,所以同一个值,可能有不同的内存数据,所以要使用以下的方法:
以float
为例,32位APP中精度为
6-7,所以取
1e-7。
两个数字
A
、
B,
if
(
|A-B|
<1e-7
)
则
A、B相等。
⑤ php中的浮点数分单双精度吗用gettype()得到的double,用var_mp()是float
PHP中,float指“泛称的浮点数”,而不像“java或c中特指单精度浮点single-precisioned float”
double是指双精度浮点,全称double-precisioned float
按理浮点类型都因该返回'float',
getType函数由于要保持历史兼容,以前旧版就返回double,所以现在仍然返回double
PHP的基本类型中也只有64bit双精度浮点一种浮点数,即double。PHP没有使用单精度32bit浮点。
⑥ PHP中可以使用科学计数法的格式表示浮点数嘛
PHP 中是可以使用科学计数法表示浮点数的。
其实你可以自己写两行代码测试一下。
自己测试出来的结课往往会记得更牢固。
⑦ php 浮点加减是不是会出现精度问题
前段时间同事在算个值的时候发现,算出来的值不对,于是来问我,之前的开发中也遇到过这个问题,已经记不清楚怎么处理的了,貌似用round四舍五入来着
php浮点数的精度
浮点数的精度
浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。
此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118…。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
上已经讲了解决方法是用任意精度数学函数或者 gmp 函数,具体用什么函数还是看官方文档
⑧ PHP中怎么限制浮点型数据的精确度
round
(PHP 3, PHP 4, PHP 5)
round -- 对浮点数进行四舍五入
float round ( float val [, int precision] )
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
例子 1. round() 例子
<?php
echo round(5.045, 2); // 5.05
echo round(5.055, 2); // 5.06
?>
要设置为3位数的话不用说了吧
round($num,3);
⑨ 判断浮点型数据的值相等的问题.php问题.
每个浮点数没有具体准确值,都只有准确的范围。
所以比较是在比较范围。
如果你的精确度是小数点后2位。(比较不精确但为说明问题)
//原来的$a==$b
if($a>=$b+0.005&&$a<$b+0.005)
0.005就是允许的误差。
可以改成
$e=0.00001;//允许的误差值,刚刚的0.005,换成更精确0.00001
if(abs($a-$b)<$e){
//a,b相等
}
误差值e要根据数据整体分布范围定,如果太精确,超过双精度表示范围,就容易出误判。
即范围不能超过甚至不能接近浮点数约15~16个有效十进制数字的最低位的数量级..
⑩ 请问在PHP中《 数据类型、浮点数、字符串、数组和对象》。是什么意思,谁能帮我解释一下
数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值:
$a = 1234; # 十进制数
$a = -123; # 负数
$a = 0123; # 八进制数 (等于十进制数的83)
$a = 0x12; # 十六进制数(等于十进制数的18)
$a = 1.234; # 浮点数"双精度数"
$a = 1.2e3; # 双精度数的指数形式
字符串
字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。而且,在双引号字符串中可以使用反斜杠(\)在字符串中加入转义序列与转换字符。举例如下:
$first = hello;
$second = "world";
$full1 = "$first $second"; # 产生 hello world
$full2 = $first $second;# 产生 $first $second
$full3="01dc studio,\." 2000 right.\" " ;
请注意最后一行,如果需要在字符串中使用双引号,可以使用反斜杠字符,象该行语句所示。这里的的反斜杠用来使双引号的功能改变。
可以将字符与数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在php手册中有详细的例子。
数组与哈希表
数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。
// 一个包含两个元素的数组
$a[0] = "first";
$a[1] = "second";
$a[] = "third"; // 添加数组元素的简单方法
// 现在$a[2]被赋值为"third"
echo count($a); // 打印出3,因为该数组有3个元素
// 用一个语句定义一个数组并赋值
$myphonebook = array (
"sbabu" =$#@62; "5348",
"keith" =$#@62; "4829",
"carole" =$#@62; "4533"
);
// 噢,忘了教长吧,让我们添加一个元素
$myphonebook["dean"] = "5397";