php浮点数精度值实例程序详解_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php浮点数精度值实例程序详解_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3459字,纯文字阅读大概需要5分钟。
内容图文
![php浮点数精度值实例程序详解_PHP教程](/upload/InfoBanner/zyjiaocheng/181/a54d193da99d4af5ba547edf7e4c22d9.jpg)
php中浮点数的精度值是用来控制输出该浮点数时使用的,可以理解为控制输出的位数,精度值不同,看到输出结果也可能不一样,注意:其内部还是按照实际值存储的,当两个浮点数进行四则运算时,用的还是其本来的值。
php的配置文件中使用precision来设定全局指定浮点数的精度值,似乎每个发行版,它的默认设置都不太一样,我在window下看到是12,在linux下看到此值是14,当然也可以通过程序中使用ini_set来改变全局设置,例如:
代码如下 | |
ini_set("precision", "15"); |
对于精度我一直理解为小数点后保留多少,那么在php的浮点数中是这样的么?答案是否定的。
浮点数其实是整数部分和小数部分组成,这里的精度是指整数部分的位数加小数部分的位数不能超过其精度最大值,如果超过,则按照四舍五入的方法截断到最大的精度值。整数部分如果是0,则不计位数,小数部分末尾0也不计入位数。另外对于同一个数,precision的不同,可能显示的出来表现形式也不一样。下面通过例子的方式来说明。
整数部分为 0 情况
代码如下 | |
$num = 0.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
//超过精度值,保留5位这种情况下,精度值等价于小数点后保留几位。
整数部分大于 0 情况
代码如下 | |
$num = 12.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
。
整数部分大于 0 情况 之二
代码如下 | |
$num = 12345678.12345600000000000; ini_set("precision", "12"); ini_set("precision", "3"); ini_set("precision", "5"); |
//超过精度值,且整数部分位数超过精度,小数部分舍弃,且整数部分只取5位上述例子中可以看到,精度值也关系到整数部分的截取。注意到最后两个例子中显示的方式不一样,一个是使用科学计数法,一个是后面用 0 补。通过实验得出的结论是当整数部分的位数 减去 精度值 大于 4 的时候,使用科学计数法的方式,否则后面用 0 补,换句话说,就是整数部分位数超过精度值后,截断后,补 0 的个数不会超过 4 。
浮点数运算
代码如下 | |
$num1 = 1331625729.687; echo $num1 . ' $sub = $num1 - $num2; echo $sub . ' |
上述例子就说明了精度值只是控制显示结果,内部存储还是原始值,所以 $sub 的值为1331625729.687减1331625730.934。
PHP内置的echo, var_dump, json_encode, 字符串拼接等函数(指令)在显示浮点数时都有问题, 导致精度丢失.
代码如下 | |
$a = 1315537636.338467; printf("%f", $a); echo "n"; echo $a . "n"; echo $a; echo "n"; ?> 结果 1315537636.338467 1315537636.3385 1315537636.3385 |
也就是说, 用PHP最顺手的方法将浮点数转成字符串或者显示是不行的, 必须使用printf/sprintf将浮点数转成字符串.
http://www.bkjia.com/PHPjc/632694.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632694.htmlTechArticle本文章来给各位同学介绍一下关于php 浮点数精度值实例程序详解,希望有需要理解浮点数精度值的朋友可进入参考。 php中浮点数的精度值是...
内容总结
以上是互联网集市为您收集整理的php浮点数精度值实例程序详解_PHP教程全部内容,希望文章能够帮你解决php浮点数精度值实例程序详解_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。