国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ 為什么double類型不能直接判斷等于0 兩個double類型怎么判斷相等

這篇具有很好參考價值的文章主要介紹了C++ 為什么double類型不能直接判斷等于0 兩個double類型怎么判斷相等。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C++ 為什么double類型不能直接判斷等于0

問題原因

精度丟失, 十進制小數(shù)部分在轉換成2進制的時候經(jīng)常會出現(xiàn)無限位的二進制小數(shù),計算機存儲小數(shù)有長度限制,所以會進行截取部分小數(shù)進行存儲,計算機只能存儲大概的值,而不是精確的值
例如:

2.1 分成兩部分
// 整數(shù)部分
2 / 2 = 1 .... 0
1 / 2 = 0 .... 1
 
// 小數(shù)部分
0.1 * 2 = 0.2 .... 0
0.2 * 2 = 0.4 .... 0
0.4 * 2 = 0.8 .... 0
0.8 * 2 = 1.6 .... 1
0.6 * 2 = 1.2 .... 1
0.2 * 2 = 0.4 .... 0
0.4 * 2 = 0.8 .... 0
0.8 * 2 = 1.6 .... 1
0.6 * 2 = 1.2 .... 1
0.2 * 2 = 0.4 .... 0
0.4 * 2 = 0.8 .... 0
0.8 * 2 = 1.6 .... 1
0.6 * 2 = 1.2 .... 1
............ 無限循環(huán)了

實際使用時判斷方法

判斷一個單精度浮點數(shù):則是if( abs(f) <= 1e-6);
要判斷一個雙精度浮點數(shù):則是if( abs(f) <= 1e-15 );
若小于,為0;若大于,不為0 。文章來源地址http://www.zghlxwxcb.cn/news/detail-524828.html

引申問題:兩個double類型怎么判斷相等?

方法一: 使用epsilon
// EPSILON指的是浮點數(shù)可表示的最小值
static inline bool DoubleEqual(double a, double b)
{
     return fabs(a - b) < std::numeric_limits<double>::epsilon();
}

方法二: 根據(jù)精度
static inline bool DoubleEqual(double a, double b)
{
     return fabs(a - b) < 0.000001
}

到了這里,關于C++ 為什么double類型不能直接判斷等于0 兩個double類型怎么判斷相等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C++中為什么不能把所有函數(shù)都設置成虛函數(shù)?

    在面試的時候被問到一個問題,既然虛函數(shù)可以不被重寫,為什么不把所有的函數(shù)都設置成虛函數(shù)? 我當時的回答是,因為對于工程來說,一個類里可能會有很多的函數(shù),都設置成虛函數(shù)的話會有很多不必要的開銷(虛函數(shù)表)。但總覺得回答不夠完善,所以閑下來去了解了

    2023年04月12日
    瀏覽(33)
  • 為什么 volatile不能保證原子性

    volatile 本質上是一種內(nèi)存屏障,它可以確保在 volatile 變量寫操作和讀操作之間不會發(fā)生重排序,這樣就可以保證對 volatile 變量的修改能夠立即對其他線程可見。但是, volatile 只能保證可見性,并不能保證原子性。 在 Java 中,原子性是指一個操作是不可中斷的,即使在

    2024年02月15日
    瀏覽(28)
  • 為什么sessionStorage不能代替vuex

    Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 譯為“會話存儲”,也是HTML5新增的一個存儲對象, 用于本地臨時存儲同一窗口的數(shù)據(jù),在 關閉窗口之后 將會刪除這

    2024年02月09日
    瀏覽(27)
  • STM32為什么不能跑Linux?

    STM32是一系列基于ARM Cortex-M微控制器的產(chǎn)品,它們主要用于嵌入式系統(tǒng)中。而Linux則是一個開源的類Unix操作系統(tǒng),主要面向的是桌面電腦、服務器等資源豐富的計算機。雖然理論上可以將Linux移植到STM32上運行,但是由于兩者之間存在著很多技術差異,導致在實際使用中面臨著

    2024年04月10日
    瀏覽(28)
  • 為什么MySQL單表不能超過2000萬行?

    摘要: MySQL一張表最多能存多少數(shù)據(jù)? 本文分享自華為云社區(qū)《為什么MySQL單表不能超過2000萬行?》,作者: GaussDB 數(shù)據(jù)庫 。 最近看到一篇《我說MySQL每張表最好不要超過2000萬數(shù)據(jù),面試官讓我回去等通知》的文章,非常有趣。 文中提到,他朋友在面試的過程中說,自己的

    2024年02月05日
    瀏覽(21)
  • 【PDF密碼】PDF文件不能打印,為什么?

    【PDF密碼】PDF文件不能打印,為什么?

    正常的PDF文件是可以打印的,如果PDF文件打開之后發(fā)現(xiàn)文件不能打印,我們需要先查看一下自己的打印機是否能夠正常運行,如果打印機是正常的,我們再查看一下,文件中的打印功能按鈕是否是灰色的狀態(tài)。 如果PDF中的大多數(shù)功能按鈕以及打印按鈕都是灰色的狀態(tài),那就證

    2024年02月13日
    瀏覽(30)
  • 為什么直接使用IP地址無法訪問網(wǎng)站

    在一些情況下,使用IP地址不能直接訪問網(wǎng)站的原因主要有以下幾種: 虛擬主機技術 現(xiàn)在很多網(wǎng)站采用虛擬主機技術,即在同一個服務器上托管多個不同的網(wǎng)站,這些網(wǎng)站共享同一個IP地址。此時,訪問這些網(wǎng)站需要根據(jù) HTTP 請求中的 Host 頭信息來確定具體訪問哪個網(wǎng)站,而

    2024年02月11日
    瀏覽(25)
  • 為什么單片機可以直接燒錄程序的原因是什么?

    為什么單片機可以直接燒錄程序的原因是什么?

    單片機(Microcontroller)可以直接燒錄程序的原因主要有以下幾點: 集成性:單片機是一種高度集成的芯片,內(nèi)部包含了處理器核心(CPU)、存儲器(如閃存、EEPROM、RAM等)、輸入/輸出接口(如GPIO、UART、SPI、I2C等)以及時鐘電路等功能模塊。這種高度集成的設計使得單片機能

    2024年02月16日
    瀏覽(99)
  • springboot~InvocationHandler中為什么不能使用@Autowired

    @Autowired 是 Spring Framework 中用于自動注入依賴的注解,通常情況下可以正常工作,但有一些情況下可能無法獲取到 bean 對象: Bean未定義或未掃描到 :如果要注入的 bean 沒有在 Spring 上下文中定義或者沒有被正確掃描到, @Autowired 將無法找到要注入的 bean。確保你的 bean 配置正

    2024年02月10日
    瀏覽(22)
  • JavaScript——為什么靜態(tài)方法不能調用非靜態(tài)方法

    JavaScript——為什么靜態(tài)方法不能調用非靜態(tài)方法

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學習方向: 主攻前端方向,正逐漸往全干發(fā)展 ?? 個人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè) ?? 人生格言: 積跬步至千里,積小流成江海 ?? 推薦學習:??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項目實戰(zhàn) ??Node.js??

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包