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

【Java se】為什么大部分小數(shù)在計算機中是不精確的

這篇具有很好參考價值的文章主要介紹了【Java se】為什么大部分小數(shù)在計算機中是不精確的。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

目錄

一、什么是小數(shù)

二、浮點數(shù)在計算機中的轉(zhuǎn)換規(guī)則

(1)整數(shù)部分轉(zhuǎn)換步驟

(2) 小數(shù)部分轉(zhuǎn)換步驟

三、使用代碼說明

四、手動轉(zhuǎn)換小數(shù)

五、解決辦法


一、什么是小數(shù)

? ? ? ? 在計算機中,也稱小數(shù)為浮點數(shù),因為在使用科學計數(shù)法時,數(shù)字的小數(shù)點是可以“浮動”的。

? ? ? ? 在Java中,關(guān)于浮點數(shù)有兩種數(shù)據(jù)類型:

Float Double
含義 單精度浮點數(shù) 雙精度浮點數(shù)
Java中的默認值 不是默認浮點數(shù)類型 是默認浮點數(shù)類型
Java中所占字節(jié)數(shù) 4字節(jié) 8字節(jié)
最大值

3.4E38

1.79E308

二、浮點數(shù)在計算機中的轉(zhuǎn)換規(guī)則

? ? ? ? 數(shù)字在計算機中是采用二進制存儲的,在將小數(shù)存入計算機中時,要將十進制轉(zhuǎn)為二進制,最后呈現(xiàn)給我們的是二進制在重新轉(zhuǎn)換為十進制的結(jié)果。而在十進制轉(zhuǎn)換為二進制的過程中,極易出現(xiàn)無限循環(huán)的情況,因此小數(shù)將變得不再精確。計算機最終會取一個無限接近結(jié)果的小數(shù)作為結(jié)果。

????????十進制數(shù)轉(zhuǎn)換為二進制數(shù)時,需要對整數(shù)部分與小數(shù)部分分別進行轉(zhuǎn)換。

(1)整數(shù)部分轉(zhuǎn)換步驟

????????1.使用十進制的值除以2,得到兩個部分,商和余數(shù);

????????2.商繼續(xù)除以2,直到商為0為止;

????????3.余數(shù)倒著看,就是二進制的值。

(2) 小數(shù)部分轉(zhuǎn)換步驟

????????1.整數(shù)部分轉(zhuǎn)整數(shù)部分,小數(shù)部分轉(zhuǎn)小數(shù)部分;

????????2.把十進制的小數(shù)乘以2:

? ? ? ? ????????(1).結(jié)果如果大于1,轉(zhuǎn)換后的小數(shù)后面記1;

? ? ? ? ????????(2).結(jié)果如果小于1,轉(zhuǎn)換后的小數(shù)后面記0。

????????3.直到結(jié)果為1.0為止。

三、使用代碼說明

public class Demo01 {
	public static void main(String[] args) {
		double x = 10 - 9.9;
		double y = 1.0 - 9.0 / 10;
		
		//觀察x和y是否相等:
		System.out.println(x);
		System.out.println(y);
		
		//判斷x和y是否相等
		System.out.println(x == y);
		System.out.println(Math.abs(x - y) < 0.000001); //Math.abs()取絕對值
	}
}

? ? ? ? 運行結(jié)果:

【Java se】為什么大部分小數(shù)在計算機中是不精確的

? ? ? ? ?我們發(fā)現(xiàn),在日常計算中,x與y的值應該是相等的,但是使用浮點數(shù)進行除法運算后,就已經(jīng)將值變得不精確了,因此,兩個算式的最終結(jié)果不一致,并且相差很小。

四、手動轉(zhuǎn)換小數(shù)

? ? ? ? 將十進制數(shù)0.6轉(zhuǎn)換為二進制數(shù)

【Java se】為什么大部分小數(shù)在計算機中是不精確的? ? ? ? 我們發(fā)現(xiàn),這里出現(xiàn)了循環(huán),因此浮點數(shù)是不精確的。

五、解決辦法

? ? ? ? 使用BigDecimal類,舉例代碼如下:

public class Demo02 {
	public static void main(String[] args) {
		
		System.out.println("============直接計算============");
		System.out.println("0.1 × 0.2 = " + 0.1 * 0.2);
		
		
		System.out.println("=====使用BigDecimal + 字符串=====");
		BigDecimal d1 = new BigDecimal("0.1");
		BigDecimal d2 = new BigDecimal("0.2");
		BigDecimal d3 = d1.multiply(d2);
		double result = d3.doubleValue();
		System.out.println("0.1 × 0.2 = " + result);
	}
}

? ? ? ? 運行結(jié)果如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-474410.html

============直接計算============
0.1 × 0.2 = 0.020000000000000004
=====使用BigDecimal + 字符串=====
0.1 × 0.2 = 0.02

到了這里,關(guān)于【Java se】為什么大部分小數(shù)在計算機中是不精確的的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 用Matlab實現(xiàn)車牌分割(可識別大部分藍色、綠色車牌)

    用Matlab實現(xiàn)車牌分割(可識別大部分藍色、綠色車牌)

    ? ? ? 最近學習了數(shù)字圖像處理的腐蝕、膨脹、閉運算、開運算等內(nèi)容,于是想進行實踐。車牌分割是一個不錯的選擇,里面涉及到了很多知識點。 ? ? ? 這里先簡述一下車牌分割的思路和流程(這里以綠色車牌為例): 1.定位綠色車牌區(qū)域 2.車牌矯正(如果圖像中車牌是傾

    2024年02月12日
    瀏覽(24)
  • 1200 + AI工具大收錄,58個分類,支持大部分行業(yè)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言 一、使用步驟 總結(jié) 隨著人工智能技術(shù)的不斷發(fā)展,越來越多的AI工具涌現(xiàn)出來,它們在各個領域中得到了廣泛的應用。除了常用的文本、圖片、視頻AI工具,還有普通辦公、設計、編程、

    2024年02月16日
    瀏覽(48)
  • 安全清理大部分的C盤內(nèi)存(一般10GB以上)

    安全清理大部分的C盤內(nèi)存(一般10GB以上)

    ?如果感覺有用請 關(guān)注,點贊,收藏!? 下次分享更有用的干貨~ 歡迎轉(zhuǎn)載,請注明出處! 用360清理發(fā)現(xiàn), windows search日志 占用了70多個G空間,先清除!? ? 該日志文件有撒用呢?? 如果沒有這個日志文件,我們在文件系統(tǒng)進行搜索的時候就會比較慢了,而且還會出現(xiàn)這樣的

    2023年04月15日
    瀏覽(88)
  • MySQL 字段為 NULL 的5大坑,大部分人踩過

    MySQL 字段為 NULL 的5大坑,大部分人踩過

    在驗證問題之前,我們先建一張測試表及測試數(shù)據(jù)。 ? 構(gòu)建的測試數(shù)據(jù),如下圖所示: ? 有了上面的表及數(shù)據(jù)之后,我們就來看當列中存在 NULL 值時,究竟會導致哪些問題? 我們都知道, count 是用來計數(shù)的,當表中某個字段存在 NULL 值時,就會造成 count 計算出來的數(shù)據(jù)丟

    2024年02月05日
    瀏覽(21)
  • CTF Misc(2)內(nèi)存取證基礎以及原理,覆蓋了大部分題型

    CTF Misc(2)內(nèi)存取證基礎以及原理,覆蓋了大部分題型

    內(nèi)存取證在ctf比賽中也是常見的題目,內(nèi)存取證是指在計算機系統(tǒng)的內(nèi)存中進行取證分析,以獲取有關(guān)計算機系統(tǒng)當前狀態(tài)的信息。內(nèi)存取證通常用于分析計算機系統(tǒng)上運行的進程、網(wǎng)絡連接、文件、注冊表等信息,并可以用于檢測和分析惡意軟件、網(wǎng)絡攻擊和其他安全事件

    2024年02月12日
    瀏覽(20)
  • 校園綜合服務平臺V3.9.2 源碼修復大部分已知BUG

    校園綜合服務平臺V3.9.2 源碼修復大部分已知BUG

    校園綜合服務平臺,版本更新至V3.9.1 ?,源碼功能強大,ui 精美, 功能包含但不限于校園跑腿,外賣,組局,圈子,商城,抽獎,投票,團購,二手市場,簽到,積分商城,一元購等!即刻源碼持續(xù)更新

    2024年04月26日
    瀏覽(99)
  • windows11(win10大部分通用)系統(tǒng)C盤清理 | 深度優(yōu)化

    windows11(win10大部分通用)系統(tǒng)C盤清理 | 深度優(yōu)化

    前言 :首先對于計算機來說,Windows操作系統(tǒng)一般是安裝在磁盤驅(qū)動器的C盤中,運行時會產(chǎn)生許多 ?垃圾文件? ,C盤空間在一定程度上會越來越小。而把它作為生產(chǎn)力工具的我們,時間越久,C盤常常會提示顯示其內(nèi)存已不足。C盤容量不足將會極大 ?影響系統(tǒng)的運行速度? ,

    2024年02月05日
    瀏覽(20)
  • 50個Linux常用命令行快捷鍵(大部分適配Mac OS)

    50個Linux常用命令行快捷鍵 (大部分適配Mac OS) 移動光標到行首: Ctrl + a 移動光標到行尾: Ctrl + e 移動光標到上一個單詞的開頭: Ctrl + ← 移動光標到下一個單詞的開頭: Ctrl + → 刪除光標之前的字符: Ctrl + u 刪除光標之后的字符: Ctrl + k 刪除光標之前的單詞: Ctrl + w 清

    2024年02月10日
    瀏覽(29)
  • 面試官:synchronized 能不能禁止指令重排序?大部分人都會答錯!

    面試官:synchronized 能不能禁止指令重排序?大部分人都會答錯!

    首先一定要明確:指令重排序和有序性是不一樣的。這一點非常重要。 我們經(jīng)常都會這么說: volatile能保證內(nèi)存可見性、禁止指令重排序但是不能保證原子性。 synchronized能保證原子性、可見性和有序性。 注意:這里的有序性并不是代表能禁止指令重排序。 舉個例子: 在雙

    2024年02月11日
    瀏覽(21)
  • 數(shù)學建模美賽E、F題備考策略(自用,大部分復制粘貼)

    數(shù)學建模美賽E、F題備考策略(自用,大部分復制粘貼)

    這里要講一下故事的背景,我們小組三個人都是大一大二的學生,我的隊友們都是數(shù)學專業(yè)的學生,所以比賽中的編程部分就交給了我這樣的工業(yè)工程系的選手。我們在看完了歷年賽題后一直認為:前面的幾題我們都很難建立出很棒的模型,因此我們將目光對準E、F兩題,希

    2024年01月17日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包