首頁 後端開發 php教程 两个FLOAT相加出现的奇怪现象~解决思路

两个FLOAT相加出现的奇怪现象~解决思路

Jun 13, 2016 am 10:08 AM
float printf quot

两个FLOAT相加出现的奇怪现象~~~~

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->list ( $usec, $sec ) = explode ( ' ', microtime () );printf("秒:%.16f", (float)$sec);printf("微秒:%.16f", (float)$usec);printf("相加:%.16f", ( float ) $usec + ( float ) $sec);
登入後複製

输出结果是:
秒:1327048300.0000000000000000
微秒:0.9687510000000000
相加:1327048300.9687509536743164 

我知道浮点数是一个近似值,但是我现在打印$usec且保留小数点后16位的时候,它就是没有小数啊?那不就可以认为它就等于1327048300吗?
它两个相加为什么不是1327048300.9687510000000000呢??

谢谢!!

------解决方案--------------------
Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数
------解决方案--------------------
连什么是有效数都弄不清楚,真不明白你们爹妈花许多钱供你们上大学是为什么
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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)

float最大值為多少 float最大值為多少 Oct 11, 2023 pm 05:54 PM

float最大值:1、在C語言中,float最大值是3.40282347e+38,根據IEEE 754標準,float類型的最大指數為127,尾數的位數為23,透過這種方式,最大浮點數為3.40282347 e+38;2、在Java語言中,float最大值是3.4028235E+38;3、在Python語言中,float最大值是1.7976931348623157e+308。

float精度能到多少 float精度能到多少 Oct 17, 2023 pm 03:13 PM

float精度能到6到9位小數。根據IEEE754標準,float類型可以表示的有效數字位數為大約6到9位數。需要注意的是,這只是理論上的最大精度,實際使用中由於浮點數的捨入誤差,float類型的精度往往會更低。在計算機中進行浮點數運算時,由於浮點數的精確度限制,可能會出現精度損失的情況。為了提高浮點數的精度,可以使用更高精度的資料類型,例如double或long double。

float32位元組包括哪些 float32位元組包括哪些 Oct 10, 2023 pm 04:07 PM

float32位元組包括符號位、指數位和尾數位,用來表示32位浮點數。詳細介紹:1、符號位(1位),用來表示數字的正負,0表示正數,1表示負數;2、指數位(8位),用來表示浮點數的指數部分,透過指數位,可以調整浮點數的大小範圍;3、尾數位(23位),用來表示浮點數的尾數部分,尾數位儲存了浮點數的小數部分。符號位決定了浮點數的正負,指數位和尾數位共同決定了浮點數的大小和精確度。

c語言中float什麼意思 c語言中float什麼意思 Oct 12, 2023 pm 02:30 PM

C語言中的float是一種資料型,用來表示單精確度浮點數,浮點數是一種用科學計數法表示的實數,可以表示非常大或非常小的數值。 float類型的變數可以儲存小數點後6位有效數字的數值,在C語言中,使用float類型可以進行浮點數的運算和存儲,其變數可以用於表示小數、分數、科學計數法等需要精確表示的實數,與整數型不同,浮點數可以表示小數點後的數字,並且可以進行小數的四則運算。

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

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

資料庫float長度有哪些 資料庫float長度有哪些 Oct 10, 2023 pm 03:57 PM

常見的資料庫float長度有:1、MySQL中的float類型長度,可以是4個位元組或8個位元組;2、Oracle中的float類型長度,可以是4個位元組或8個位元組;3 、SQL Server中的float類型長度,固定為8個位元組;4、PostgreSQL中的float類型長度,可以是4個位元組或8個位元組等等。

float屬性取值有哪些 float屬性取值有哪些 Oct 10, 2023 pm 02:03 PM

float屬性取值有left、right、none、inherit、clearinline-start、inline-end。詳細介紹:1、left,元素向左浮動,即元素會盡可能地靠近容器的左邊,其他元素會圍繞在其右側;2、right,元素向右浮動,即元素會盡可能地靠近容器的右邊,其他元素會圍繞在其左側;3、none預設值,元素不浮動,會按照正常的文件流程排列等等。

float佈局會造成哪些問題 float佈局會造成哪些問題 Oct 10, 2023 pm 03:31 PM

float佈局會造成有清除浮動問題、元素重疊問題、文字環繞問題和響應式佈局問題等。詳細介紹:1、清除浮動問題,當使用float佈局時,浮動元素會脫離文檔流,這可能導致父容器無法正確地包裹浮動元素,這種情況下,父容器的高度會塌陷,導致佈局混亂; 2.元素重疊問題,當多個元素使用float佈局時,它們可能會發生重疊的情況,這是因為浮動元素不再佔據正常的文檔流位置等等。

See all articles