Rumah pembangunan bahagian belakang tutorial php PHP的floor函数问题。

PHP的floor函数问题。

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

Salin selepas log masuk

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

$money=271.28;
echo $money=floor($money*pow(10,2))/100
Salin selepas log masuk
我惊讶的发现输出的竟然不是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));
Salin selepas log masuk
发现结果是: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>
             
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

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

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

Cara menggunakan fungsi FLOOR MySQL untuk membulatkan ke bawah Cara menggunakan fungsi FLOOR MySQL untuk membulatkan ke bawah Jul 25, 2023 pm 12:45 PM

Cara menggunakan fungsi FLOOR MySQL untuk membulatkan ke bawah Dalam MySQL, fungsi FLOOR digunakan untuk membulatkan ke bawah. Fungsi FLOOR ialah alat yang sangat berguna jika anda perlu membundarkan nombor titik terapung atau nombor dengan titik perpuluhan kepada integer terdekat. Artikel ini akan memperkenalkan cara menggunakan fungsi FLOOR MySQL dan menyediakan beberapa contoh kod praktikal. Mula-mula, mari kita fahami sintaks fungsi FLOOR. Sintaks fungsi FLOOR adalah seperti berikut: FLOOR(x) dengan x mewakili

Kira kuasa nilai berangka menggunakan fungsi Math.pow() Java Kira kuasa nilai berangka menggunakan fungsi Math.pow() Java Jul 25, 2023 pm 06:25 PM

Gunakan fungsi Math.pow() Java untuk mengira kuasa nilai berangka Dalam operasi matematik, kita selalunya perlu mengira kuasa nilai berangka. Di Java, kita boleh menggunakan fungsi Math.pow() untuk melaksanakan operasi eksponen. Artikel ini akan memperkenalkan cara menggunakan fungsi Math.pow() dan memberikan beberapa contoh kod. Fungsi Math.pow() ialah kaedah statik dalam pustaka matematik di Jawa, digunakan untuk mengira kuasa nilai dan mengembalikan hasil pengiraan. Sintaksnya adalah seperti berikut: Math.p

Apakah maksud PoS dan PoW Apakah perbezaannya? Apakah maksud PoS dan PoW Apakah perbezaannya? Dec 16, 2024 pm 06:50 PM

Artikel ini melihat secara mendalam dua mekanisme konsensus arus perdana: Bukti Pegangan (PoS) dan Bukti Kerja (PoW). PoS memerlukan pengesah untuk mencagarkan token untuk mendapatkan kuasa untuk mengesahkan urus niaga Ia mempunyai kelebihan penjimatan tenaga dan kebolehskalaan yang baik, tetapi ia juga boleh membawa kepada penumpuan kekayaan. PoW memerlukan pelombong untuk menyelesaikan masalah matematik yang kompleks untuk mengesahkan urus niaga Ia lebih selamat dan tidak berpusat, tetapi ia menggunakan banyak tenaga dan mempunyai skalabiliti yang lemah. Artikel ini membandingkan prinsip, kelebihan dan keburukan serta aplikasi PoS dan PoW dalam bidang blockchain untuk membantu pembaca memahami peranan utama yang mereka mainkan dalam mekanisme konsensus.

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 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