首页 后端开发 php教程 PHP的floor函数问题。

PHP的floor函数问题。

Aug 08, 2016 am 09:31 AM
floor Money pow quot

登录后复制

最近在写一个有关金融的项目。里面涉及到好多资金小数的问题。有一次用到floor想实现向下取整精确到两位小数时,突然发现如下代码不正常了。

$money=271.28;
echo $money=floor($money*pow(10,2))/100
登录后复制
我惊讶的发现输出的竟然不是271.28而是271.27!

后来查了好多资料,在php官网上看到了这么一点:

浮点数的精度有限,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。 

后来我打印了一下上面运算的结果:

printf("%.12f", $money*pow(10,2));
登录后复制
发现结果是:27127.999999999996

原来是精度问题。暂时还没找到统一的解决办法。我只有在代码逻辑中加入

if ($money - round ( $money, 2 ) 来避免已经精确了两位的数据再处理。<p>如果有人知道另一种实现我上述功能(精确到小数点后两位无论第三位是什么都舍弃)的方法请教教我。<br></p><p><spanfira sans pro font-size:16px line-height:24px background-color:rgb><spanfira sans pro font-size:16px line-height:24px background-color:rgb></spanfira></spanfira></p>
                
                
                <p>
                    以上就介绍了PHP的floor函数问题。,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。</p>
                <p>
                    </p>
             
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

如何使用MySQL的FLOOR函数向下取整 如何使用MySQL的FLOOR函数向下取整 Jul 25, 2023 pm 12:45 PM

如何使用MySQL的FLOOR函数向下取整在MySQL中,FLOOR函数用于向下取整。如果你需要将一个浮点数或者一个有小数点的数字向下取整到最接近的整数,FLOOR函数将是一个非常有用的工具。本文将介绍如何使用MySQL的FLOOR函数以及提供一些实际的示例代码。首先,让我们了解一下FLOOR函数的语法。FLOOR函数的语法如下:FLOOR(x)其中,x代表

使用java的Math.pow()函数计算数值的幂次方 使用java的Math.pow()函数计算数值的幂次方 Jul 25, 2023 pm 06:25 PM

使用Java的Math.pow()函数计算数值的幂次方在数学运算中,我们经常需要计算一个数值的幂次方。在Java中,我们可以使用Math.pow()函数来进行幂运算。本文将介绍Math.pow()函数的使用方法,并给出一些代码示例。Math.pow()函数是Java中数学库中的一个静态方法,用于计算一个数值的幂次方,并返回计算结果。它的语法如下:Math.p

PoS和PoW是什么意思?有什么区别?哪个好? PoS和PoW是什么意思?有什么区别?哪个好? Dec 16, 2024 pm 06:50 PM

本文深入探讨两种主流共识机制:权益证明(PoS)和工作量证明(PoW)。PoS要求验证者质押代币来获得验证交易的权力,具有节能、可扩展性好等优点,但也可能导致财富集中。PoW要求矿工解决复杂数学难题来验证交易,安全性更高、去中心化程度更高,但能耗大、可扩展性较差。本文比较了 PoS 和 PoW 的原理、优缺点,以及在区块链领域的应用,帮助读者了解它们在共识机制中扮演的关键角色。

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

图片消失怎么解决 图片消失怎么解决 Apr 07, 2024 pm 03:02 PM

图片消失如何解决先是图片文件上传$file=$_FILES['userfile'];  if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

图片消失怎么解决 图片消失怎么解决 Jun 13, 2016 am 10:09 AM

图片消失如何解决先是图片文件上传$file=$_FILES['userfile'];  if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 Jun 13, 2016 am 10:24 AM

为什么我在php上写的这个代码,在浏览器上什么都不显示啊

See all articles