首頁 後端開發 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 而不是預期中的 7 而不是預期中的 8 而不是預期中的 8是類似 

7.9999999999999991118...


所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。 

後來我印了上面運算的結果:

printf("%.12f", $money*pow(10,2));
登入後複製
發現結果是:27127.999999999996

原來是精確度問題。暫時還沒找到統一的解決方法。我只有在程式碼邏輯中加入

if ($money - round ( $money, 2 ) < 0.00001) {

}else{
$money=floor($money*pow(10,2))/100;
}
登入後複製
來避免已經精確了兩位數的資料再處理。 如果有人知道另一種實現我上述功能(精確到小數點後兩位無論第三位是什麼都捨棄)的方法請教我。

🎜🎜🎜 🎜 以上就介紹了PHP的floor函數問題。 ,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜 🎜 🎜
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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)

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
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