首页
/
每日頭條
/
職場
/
面試問你用的什麼數據庫
面試問你用的什麼數據庫
更新时间:2026-10-19 04:31:29

面試問你用的什麼數據庫(面試官問我存儲金額應該用哪種數據類型)1

前言

​ 最近在面試時,碰到這樣一個問題:在問到項目部分時,面試官問我:你的項目中用到的分數、金額之類的數字是用的什麼數據類型? 我沒有過多思考脫口而出:double!随後面試官又問:為啥不用float?

​ 聽到這個問題,腦子裡竟然突然有些懵,回答道:double用着順手所以就用了,面試過後我自己在聽錄音複盤時(遠程線上面試)聽到自己的回答不由得扶額苦笑,後面又對這一塊的内容進行了回顧加深。

double和float的區别

float(單精度浮點數)和double(雙精度浮點數)的主要區别如下:

​ 1)有效數字位數不同

​ 單精度浮點數有效數字為8位

​ 雙精度浮點數有效數字為16位

​ 也就是說因為有效數字位數不同,所以雙精度的double要比單精度的float要更精準一些。

​ 2)數值取值範圍不同

​ 單精度浮點數的表示範圍:-3.40E 38~3.40E 38

​ 雙精度浮點數的表示範圍:-1.79E 308~1.79E 308

​ 3.40E 38的意思是3.4*10的38次方,而1.79E 308指的是1.79*10的308次方,所以double的取值範圍要遠遠大于float

​ 3)内存中占有的字節數不同

​ 單精度浮點數在内存中占4個字節

​ 雙精度浮點數在内存中占8個字節

​ 也就是說雙精度的double要比單精度的float更占内存

​ 4)在程序中的處理速度不同

​ 一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快

在程序中默認小數為double類型,所以如果要用float的話,必須進行強轉

public static void main(String[] args){ float a = 1.1; }

比如我寫了上面的代碼的話,在程序中就會編譯報錯,正确的寫法應該為如下的代碼:

public static void main(String[] args){ float a = (float)1.1; float b = 1.1f; }

手動強轉或者在小數後面加f表示為float類型(f不區分大小寫)

在使用float時需要注意一點:float 是8位有效數字,比如說有如下代碼:

public static void main(String[] args){ float a = 1.11111111111f; System.out.println(a); }

最終的輸出結果為:1.1111112

這裡有一個疑問,無論第九位是否大于5,在取值的時候都會向第八位進1。

以上就是double和float的區别

金額到底應該用哪種數據類型?

​ 在總結double和float的區别時,我發現在真實開發中針對金額的存儲并非如我之前思考的一樣使用double或者float,為啥?讓我們看下面一段代碼:

public static void main(String[] args) { double a=0.03; double b=0.02; double c=a-b; System.out.println(c); }

​ 對于這段代碼的執行結果,大部分人可能會想肯定是0.01啊!但是運行之後會驚奇的發現結果居然是0.009999999999999998,因為float與double都是浮點數,浮點數參與的運算通常伴随着因為無法精确表示而進行的近似與舍入,所以導緻結果會有一些偏差,而涉及到金額的計算是絕對不允許存在偏差的。

​ 那麼應該怎麼表示金額呢?

​ 有兩種解決方案:第一種是存儲金額時以分或厘為單位存儲一個整數,第二種是使用BigDecimal這種數據類型來表示金額。

​ 對于第一種是我目前在寫項目時采用的,第二種暫時并未做嘗試。

總結

面試官問的小小的一個問題竟然藏有這麼多玄機和學問,不由得讓我汗顔,歸根結底還是自己的知識面不夠廣。不過這也算是面試中的一些小小收獲吧,能發現自己的不足并及時補足。

作者:喧嘩鍊接:https://juejin.im/post/5eb115456fb9a043383d6bb5

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
領導誇你時應該怎麼回複
領導誇你時應該怎麼回複
領導當衆誇你怎麼回複?别隻說“謝謝”,高手都知道這3點職場中怎麼樣和領導相處一直是一件很有争論的話題。對于很多人來說,他們認為在職場中和自己的領導不用走得很近,自己有能力有實力就可以了,還怕領導不正眼看你嗎?但是也有部分人認為這種有實力肯幹...
2026-10-19
退休老人的重新就業
退休老人的重新就業
8月下旬,中國老年人才網的正式上線被稱為我國老年人才信息庫和老年人才信息服務平台啟動建設的标志性事件,老年人重返職場的話題由此引發讨論。廣西的老年人退休後在忙些啥,他們退休後有沒有重返職場的意願,又是如何找工作的?記者對此展開了調查。多數老...
2026-10-19
excel做月計劃目标表怎麼做
excel做月計劃目标表怎麼做
excel做月計劃目标表怎麼做?今天這裡幹貨君準備了一份自己制作的月工作計劃表,色系比較清新簡潔,可以自動提示當天日期,自動統計工作計劃完成率,下面小編将會簡單講解下這份工作計劃表的制作方法,如果不想學習表格的制作方法想直接拿到這個表格的,...
2026-10-19
退休了還有什麼工作可以幹
退休了還有什麼工作可以幹
前言:退休之後我們都知道很多工作都已經不适合我們,也就是說不管我們付出多少,很多人都不會在意接受我們的工作方式。你已經過了退休的年紀,在很多崗位上,别人根本就不敢使用你,所以在這個時候你就顯得特别孤單。退休之後,如果還想工作,可以選擇這幾種...
2026-10-19
怎麼才能讓領導拍你馬屁
怎麼才能讓領導拍你馬屁
怎麼才能讓領導拍你馬屁?職場上有一種人最煩人,啥活不見他幹,虛頭巴腦的整天圍着領導轉,領導還偏心眼吃他那一套,啥好事都有他,你說氣不氣人?這種讨厭的人就是馬屁精,下面我們就來聊聊關于怎麼才能讓領導拍你馬屁?接下來我們就一起去了解一下吧!怎麼...
2026-10-19
Copyright 2023-2026 - www.tftnews.com All Rights Reserved