php浮点数(float)运算中转整形(int)问题
2015-06-25 16:14
961 查看
$f = 0.58; var_dump(intval($f * 100.0));
也许你认为他会输出58,但是实际上他输出的是57.
原因是作为浮点型数据,其精度已经损失了一部分,达不到完全精确。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
php中浮点数是弱类型,对于整数或者经过运算以后结果是整数的浮点数,php能当作整数对待,但类型还是浮点型不变。但如果经过运算以后不是整数,那php就把结果当作严格的浮点数对待了
在实际的开发中我们可以使用如下逻辑来解决这种境况
intval(round(floatval($value) * 100));
相关文章推荐
- PHP实战-文章发布系统学习记录
- yii框架AR详解
- file.getParentFile.mkdirs()
- thinkphp 引入页首页尾的写法
- php常用函数(个人收藏)
- filter_var php
- yii2实现邮件发送
- 使用PHP QR Code生成二维码
- php项目中常用的log日志记录方法
- Ubuntu 安装 ImageMagic(6.9.1-6)及 PHP 的 imagick (3.0.1)扩展
- php图片水印类
- 初学Laravel4常见的问题之三
- ContentProvider 使用
- PHP - urlencode和rawurlencode的区别
- php 小数整理,向上取整,向下去整,四舍五入,丢弃小数部分,保留整数部分
- PHP 页面跳转方法
- PHP + Ice安装配置
- 如何在DOS窗口下运行PHP文件
- 小试牛刀-教务信息管理系统(ForgetPw)
- 在服务器上php执行某些远程函数出错