当前位置:首页 > PHP > 正文内容

php解决浮点数精度问题

高老师9年前 (2017-12-24)PHP2511

首先看看以下代码:

代码1:

<?php
$a=0.1;
$b=0.7;

if($a+$b==0.8)
{
	echo "1";
}
else{
	echo "2";
}
?>

代码2:

<?php
    $f = 0.58;
    var_dump(intval($f * 100)); //为啥输出57
?>

以上问题引用鸟哥的话就是"你看似有穷的小数, 在计算机的二进制表示里却是无穷的".

但是这都不要紧,因为php还提供了高精度函数库。

解决代码1:

<?php
$a=0.1;
$b=0.7;

if(bcadd($a,$b,1)==0.8)
{
	echo "1";
}
else{
	echo "2";
}
?>

解决代码2:

<?php
    $f = 0.58;
    var_dump(bcadd($f * 100,0,0));
?>

其实在其他语言中也是存在的,例如以下c#

        static void Main(string[] args)
        {
            double a = 0.1;
            double b = 0.7;
            if (a+b==0.8)
            {
                Console.WriteLine("ok");
            }
            else
            {
                Console.WriteLine("failed!");
            }
            Console.ReadKey();
        }

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/52.html

分享给朋友:

“php解决浮点数精度问题” 的相关文章

PHP使用post发送Json数据

PHP使用post发送Json数据

前公司吃饭是需要在钉钉报餐的,对于不挑剔的我每天都在公司吃饭,有时忘记报餐导致吃不了饭还是很麻烦的。看了下报餐系统需要的是json数据包含我的工号即可。于是编写如下代码,放在360网址监控,1小时执行1次<?php /*自动报餐类*/ class  AutoBaocan{...

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/*  * 获取当前PHP文件名称  */ if (!function_exists('phpself&#...

php迭代器学习

php迭代器学习

php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习:    (2.1)pcntl_fork()执行时:       &nbs...

php守护进程

php守护进程

<?php /**  * daemonize让当前脚本为守护进程执行  * @param string $callback 匿名函数  */ function daemonize($callback) {...

php位运算符详解

php位运算符详解

文章篇幅较长,如果不喜欢看文章的,此处抛出韩顺丰老师的位运算视频,韩老师应该是全网讲php位运算符最详细的一个老师了。链接:https://pan.baidu.com/s/14xj7er8eVSUcJ-jYXyA0GA  提取码:731m 链接:https://pan.baidu.com...