/* 自定義代碼塊樣式 */

herrDeng網內搜尋

自訂搜尋

Ads

2026年7月8日 星期三

為什麼 0.1+0.2 != 0.3?IEEE 754 浮點數誤差原理與 Python/C++ 實測


The Math Error Every Programmer Must Know: IEEE 754
🌐 English audio available! Select "English" in the audio track settings (⚙️  Audio track) to listen in English.

電腦float計算含Python cpp示範0.1+0.2!=0.3
為什麼在 Python 或 C++ 中執行 0.1 + 0.2 == 0.3 會得到 False?這不是程式出錯,而是電腦底層採用 IEEE 754 二進位浮點數格式所導致的必然現象。

本影片將帶你從十進位與二進位的轉換原理出發,深入分析浮點數在記憶體中的儲存方式(Sign, Exponent, Fraction),並透過 Python 的 decimal 模組以及 C++20 的 std::bit_cast 進行實測示範,最後分享如何正確處理程式中的浮點數比較問題。
 #anwendeng 
------
章節時戳
00:00 為什麼 0.1 + 0.2 在程式中不等於 0.3?(開場實測 Python 顯示 False)
00:29 浮點數誤差的根本原因:二進位循環小數(解釋十進位與二進位轉換的差異)
01:48 十進位轉二進位的分數原理(分母必須是 2 的 n 次方才能精確表達)
02:22 實測 0.1、0.2、0.3 在電腦中的真實數值(顯示小數點後 55 位的精度誤差)
04:26 浮點數誤差範圍與有效位數(介紹 Python 的 sys.float_info 與誤差值 )
05:00 如何解決浮點數比較問題:使用 EPS 與 Python Decimal(介紹 abs(a-b) less eps 的做法)
06:35 IEEE 754 64位元 (Double) 儲存結構:Sign, Exponent, Fraction 詳解
09:11 C++20 實作示範:透過 std::bit_cast 查看底層 64 位元儲存內容
12:36 總結與真相大白

沒有留言:

Related Posts Plugin for WordPress, Blogger...

熱門文章