為什麼float後面要加f

2020-12-25 老徐聊java

去年面試,筆試時有一道題是:

問題:float f=3.4;是否正確?

我當時真是想都沒想就填了個正確。結果就是基礎都不過關了。(我還深深地記得上大學時,教我的java老師特意在課上說過這個問題,忘得一乾二淨)

對於我們碼農來說,真的是萬事都是增刪改查,都習以為常了,而java中的一些小細節可能我們都把他們忘記了,今天我就幫大家拾起java中冰山一角的float吧。

float:浮點型數據類型,用於存儲單精度浮點數或雙精度浮點數

在編譯器中直接寫 float a= 3.4;

不正確寫法

直接就報錯了,(我想說這個問題真的很明顯,可是吧真的給忽略了)

說到這裡,大家也知道答案了,肯定是不正確了。

原因:編譯器可以自動向上轉型,如int 轉成 long 系統自動轉換沒有問題,因為後者精度更高

double 轉成 float 就不能自動做了,所以後面的加上個 f;也就是說必須寫成float f=(float)3.4 或float f = 3.4f

正確寫法

記住這一點:在java裡面,沒小數點的默認是int,有小數點的默認是 double

相關焦點

  • float和double有什麼區別?
    可能是數符加尾數佔 24 位,指數符加指數佔 8 位 -- float。數符加尾數佔 48 位,指數符加指數佔 16 位 -- double。知道了這四部分的佔位,按二進位估計大小範圍,再換算為十進位,就是你想知道的數值範圍。
  • java float double精度為什麼會丟失?淺談java的浮點數精度問題
    問題大概情況可以通過如下代碼理解:得到的結果如下:f=2.0015E7d=2.0015E7d2=2.0014999E7從輸出結果可以看出double 可以正確的表示20014999 ,而float 沒有辦法表示20014999 ,得到的只是一個近似值。這樣的結果很讓人訝異。
  • STM32如何收發float類型數據?
    union float_data{    float f_data;    uint8_t byte[4];};數據的流向如:&rx_float_data.byte[3]);    printf("rx_float_data.f_data = %f (addr: %#x)\n", (float)rx_float_data.f_data, &rx_float_data.f_data);    tx_float_data.f_data = rx_float_data.f_data + 1.0f;
  • float類型可以作為map的key嗎
    接著,我通過彙編發現了如下的事實:當用 float64 作為 key 的時候,先要將其轉成 unit64 類型,再插入 key 中。既然,NAN 是從一個常量解析得來的,為什麼插入 map 時,會被認為是不同的 key?
  • 詳解C語言數據類型:float與double
    為什麼是這樣?因為printf的參數被提升,而scanf的參數(作為指針)卻不被提升。這種論點提升到底是什麼?當較小尺寸的參數(特別是char,short和float)傳遞給可變參數函數(如printf之類的函數,其參數數量不固定)時,它們將轉換為較大尺寸。
  • 小小的 float,藏著大大的學問
    前言今天,我們來思考幾個問題:為什麼負數要用補碼表示?十進位小數怎麼轉成二進位?計算機是怎麼存小數的?0.1 + 0.2 == 0.3 嗎?…別看這些問題都看似簡單,但是其實還是有點東西的這些問題。正文為什麼負數要用補碼表示?
  • CSS:浮動(float)
    浮動(float)浮動最早是用來控制圖片,以便達到其他元素(特別是文字)實現「環繞」圖片的效果。在CSS中,通過float屬性來定義浮動,其基本語法格式如下:選擇器{float:屬性值;}浮動詳細內幕特性浮動脫離標準流,不佔位置,會影響標準流。浮動只有左右浮動。
  • 為什麼將0.1f改為0會使性能降低10倍?
    為了提高可讀性,博主這裡做了改寫,簡化成了以下兩段代碼:#include <iostream>#include <string>using namespace std;int main() {const float x=1.1;const float z=1.123;float y=x;for(
  • C要點5:float、double、long double(大小,範圍,輸入輸出符,科學計數法)
    6位小數float--%f    double、long double--%lf   不初始化不行    %e  科學記數法,形式如:2.23e2其中e--10float內存大小:4位元組,由sizeof(float)獲取表示範圍:-2^128 ~ +2^128,也即約-3.40282e+38 ~ +3.40e+38
  • 嵌入式系統串口傳輸int float型數據的處理
    當發送float型數據時稍微有些複雜。8.25,用二進位的科學計數法表示為: 1.00001*23120.5,用二進位的科學計數法表示為: 1.1101101*26介紹完了float型數據在內存中的存儲方式,能夠知道如何發送float型數據了:直接按照int型類似的發送肯定是不行的,這就需要採用指針的方法(在keil中數據的排放格式是大端模式):void float_char(float
  • float 浮動布局
    float 浮動布局float 譯成中文是浮動的意思,float設計之初主要用於實現文字環繞效果,後面被在頁面布局方面用的比較多,我用的最多的也是 float 。float 是一種 CSS 屬性,使用方法是 float:left 和 float:right 。看個簡單的荔枝,下面這張圖是默認的文檔流布局。
  • 動詞後面加s是為什麼?
    「like」,「喜歡」的意思,那為什麼到了「她喜歡閱讀」like就變成likes了呢?這是因為,she是第三人稱單數,因此後面的動詞遵循「三單原則」。那什麼是人稱呢,請看下表:在一般現在時的情況下,如果動詞在第三人稱單數後面,那麼就需要遵循三單原則:1. 一般情況下,直接加s,如:read-reads2.
  • 尚學堂知識整理:Java float數據類型
    所有以f或F結尾的實數稱為浮點文字。作為浮點字面量,它可以寫作32.5E-1F或32.5E-1f。所有以下浮點字面量表示相同的實數42.5:float數據類型定義兩個零:+0.0F(或0.0F)和-0.0F。 +0.0F和-0.0F都被認為是相等的。float數據類型定義了兩個無窮大:正無窮大和負無窮大。未定義浮點的一些操作的結果。
  • 為什麼look forward to後面要加doing,而不是do?
    為什麼look forward to後面要加doing,而不是do?答案是,因為to在這裡是介詞。那麼由此帶來的問題就是,該如何將它和不定式to do區分開來呢?讀完下面的內容你就明白了。所以,這裡的介詞 to 後面應該跟一個「目的地」,是一個名詞屬性的東西。那麼,如果 to 後面是一個動詞,我們自然要把動詞變為動名詞形式,這樣它才具有了「名詞屬性」。於是,I look forward to receiving your reply.類似的舉幾個例子,你試著從空間的角度感受一下意象,也就不難理解為什麼後面要用 doing 的形式了。
  • 變量專題之二:double,float和浮點變量底層表示
    double d = 1.1;還有另外一種浮點數變量 float (單精度浮點數),佔 32 bits,使用的場景比較少。和long類型類似,所有在Java原始碼字面上中出現的小數默認為double類型,float類型的字面量必須以f結尾。
  • [QT]QByteArray與char、int、float(及其數組)、string之間的互相轉化
    1.問題來源要用SQLite資料庫去保存一段定長的char型數組,裡面可能有\0等字符,所以當作字符串varchar處理鐵定丟失數據,所以要用二進位保存
  • 為什麼要光柵化?怎麼實現光柵化方法?
    為什麼要光柵化? 圖形管線的輸入是圖元頂點,輸出的則是像素(pixel),這個步驟其中還有個中間產物叫做片段(fragment),一個片段相應一個像素,但片段比像素多了用於計算的屬性,比如:深度值和法向量。通過片段能夠計算出終於將要生成像素的顏色值,我們把輸入頂點計算片段的過程叫作光柵化。為什麼要光柵化?
  • 永遠不要用float
    最近有多個老師同學諮詢關於float的問題,我統一回復「永遠別用float」。這顯然是一種極端的答案,但是對於初學者和廣大ACMer來說,真的是有效的。我們可以百度一下這句話:double 和 float 兩者只差在精確度以及數值範圍,使用方法都一樣float :單精度型變量佔用4個字節,範圍是-3.4*10^38 ~~3.4*10^38,小數點有效位為7位double:雙精度型變量佔用8個字節,範圍是-1.7*10^308 ~~1.7*10^308,
  • java類型轉換String互轉int,double, float, BigDecimal
    從低位類型到高位類型自動轉換;從高位類型到低位類型需要強制類型轉換類似於 int i=1; double s=i+1; 這種低位類型轉換的這裡就不在做說明String 轉 int ,double, float
  • MSSQL數據類型-浮點數據類型 (real、float、decimal、numeric)
    浮點數據類型包括real型、float型、decimal型和numeric型。浮點數據類型用於存儲十進位小數。在SQL Server 中浮點數值的數據採用上捨入(Round up)的方式進行存儲,所謂上捨入也就是,要捨入的小數部分不論其大小,只要是一個非零的數,就要在該數字的最低有效位上加1,並進行必要的進位。由於浮點數據為近似值,所以並非數據類型範圍內的所有數據都能精確地表示。real型數據的存儲大小為4個字節,可精確到小數點後第7位數字。