PHP下的浮点运算不准的解决办法
首先看一段代码:
首先看一段代码: <?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8); 打印出来的值居然为 boolean false
PHP手册摘录如下:
Warning 
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。 
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。
解决办法也不难,php提供了两个函数bcadd()和bcsub().
<?php
$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);//输出为boolean true


当然还有一种办法,就是将mysql的相应字段类型设置为更加精准的decimal类型。
PHP下的浮点运算不准的解决办法的更多相关文章
- linux下编译出现空间不足解决办法
		linux下编译出现空间不足解决办法 编译内核出现问题: AS .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ... 
- IE6 IE7下文字显示竖排的解决办法
		IE下文字显示竖排的解决办法: white-space:nowrap; 
- Error 56: The Cisco Systems, Inc. VPN Service has not been started(Cisco VPN在Vista下出现Error 56的解决办法)
		Error 56: The Cisco Systems, Inc. VPN Service has not been started(Cisco VPN在Vista下出现Error 56的解决办法) ... 
- ubuntu下su: Authentication failure的解决办法(su和su - root的区别)
		参考:ubuntu下su: Authentication failure的解决办法(su和su - root的区别) 
- 关于Andorid的RecyclerView在V7包下找不到的解决办法
		关于Andorid的RecyclerView在V7包下找不到的解决办法 最近在学习使用RecyclerView替换现有的ListView,看了几篇文章.当准备自己动手实现的时候发现,V7包下找不到 ... 
- windows下git bash中文乱码解决办法
		一.解决办法1:(直接上图) 1.在git bash下,右键 出现下图,选择options: 2.选择“Text” 3.将“Character set”设置为 UTF-8 转:windows下git ... 
- Vmware虚拟机下不能访问网络的解决办法之一
		Vmware虚拟机下不能访问网络的解决办法之一 1.这个是默认的网络设置 2.如果不能访问网络,看下VMware相关的服务有没有打开,win+R 3.找到VMware的相关选项,全部启用(当然网络可能 ... 
- windows7下修改hosts文件无效解决办法(转)
		通常会为了开发方便.或者屏蔽掉一些恶意网站,我们会在hosts(c:\windows\system32\drivers\etc\hosts)文件中进行相应的域名指向,例: 
- bootstrap日期控件在火狐下的模态框中选择时间下拉菜单无效的解决办法
		今天收到程序组提交的一个兼容BUG,在火狐中使用模态框加载日期控件时选择时间下拉菜单没有效果(不能点击),而在谷歌中却是好的, 排错思路:1,在当前页面主层放置一个时间控件,测试通过 2,在ajax加 ... 
随机推荐
- leetcode 13 Roman to Integer 罗马数组转整型
			描述: 将一个字符串表示的罗马数字转为整数,范围0~3999 解决: 如果后一个比前一个大,则表示减,没什么技巧. map<}, {}, {}, {}, {}, {}, {}}; int rom ... 
- 4-memset函数总结
			头文件:cstring 或 memory 一般用处: memset(arr, 0, sizeof(aar)); //初始化为0 memset(arr, -1, sizeof(aar)); / ... 
- hive分隔符总结
			ascii对应的表Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex ----------------- ... 
- Windows环境和Linux环境下Redis主从复制配置
			Windows环境下和Linux环境下配置Redis主从复制基本上一样,都是更改配置文件.Windows环境下修改的配置文件是:redis.windows.conf.redis.windows-ser ... 
- iOS界面设计,12个优秀案例激发你的灵感
			总所周知,iOS和Android是当今两大移动平台,前者采用Human Interface Design,后者采用Material Design.作为设计师,尤其是App设计师,总是会在这两者进行设计 ... 
- C语言中的nan和inf使用
			本文总结nan和inf在C语言当中的含义.产生和判定方法. C语言当中的nan 表示not a number,等同于 #IND:indeterminate (windows) 产生: 对浮点数进行了未 ... 
- idea中处理异常的快捷键
			alt+Enter 
- Linux守护进程编写方法及原理
			什么守护进程? 守护进程是运行在后台的一种用来提供服务的进程,他脱离控制台独立运行,守护进程是一种很有用的进 程. Linux的大多数服务器就是用守护进程实现的.比如,Internet服务器inetd ... 
- linux计划任务(二)
			计划任务的授权 1.at任务 /etc/at.allow /etc/at.deny 2.crontab任务 /etc/cron.allow /etc/cron.deny [注:如果allow文件存在, ... 
- 深海划水队项目---七天冲刺day1
			团队会议: 团队成员的任务认领安排: 张兆敏:登录界面,游戏界面(包含游戏区.控制区.显示信息区). 乐滔:方块的形状.移动(向左或者向右)旋转(顺时针或者逆时针),方块的下落(包含硬着陆和软着陆), ... 
