java中用float時(shí),數(shù)字后面加f,這樣是為什么你知道嗎
Java float 與 double 的區(qū)別
1、float是單精度浮點(diǎn)數(shù)
內(nèi)存分配4個(gè)字節(jié),占32位,有效小數(shù)位6-7位
double是雙精度浮點(diǎn)數(shù),內(nèi)存分配8個(gè)字節(jié),占64位,有效小數(shù)位15位
2、java中默認(rèn)聲明的小數(shù)是double類(lèi)型的
如double d=4.0
如果聲明: float x = 4.0則會(huì)報(bào)錯(cuò),需要如下寫(xiě)法:float x = 4.0f或者float x = (float)4.0
其中4.0f后面的f只是為了區(qū)別double,并不代表任何數(shù)字上的意義
3、對(duì)編程人員來(lái)而
double 和 float 的區(qū)別是double精度高,但double消耗內(nèi)存是float的兩倍,且double的運(yùn)算速度較float稍慢。
Java float、double、long類(lèi)型變量賦值添加f、d、L尾綴問(wèn)題
1、添加尾綴說(shuō)明
我們知道Java在變量賦值的時(shí)候,其中float、double、long數(shù)據(jù)類(lèi)型變量,需要在賦值直接量后面分別添加f或F、d或D、l或L尾綴來(lái)說(shuō)明。
其中,long類(lèi)型最好以大寫(xiě)L來(lái)添加尾綴,因?yàn)樾?xiě)l容易和數(shù)字1混淆。
例如:
long lNum = 1234L; float fNum = 1.23f; double dNum = 1.23d;
這是Java語(yǔ)法規(guī)定,不添加尾綴很容易引起編譯器報(bào)錯(cuò),并且程序可讀性也會(huì)變差。
2、不添加尾綴也不會(huì)報(bào)錯(cuò)的情況
Java語(yǔ)言中,整數(shù)直接量(例如:1、2、10等),JVM虛擬機(jī)是默認(rèn)為int類(lèi)型數(shù)據(jù)的。所以,當(dāng)整數(shù)直接量賦給long、float或者double,而不添加尾綴,虛擬機(jī)也會(huì)直接將int類(lèi)型數(shù)據(jù)自動(dòng)轉(zhuǎn)換為對(duì)應(yīng)類(lèi)型然后賦值。因?yàn)閿?shù)據(jù)長(zhǎng)度短的轉(zhuǎn)換為長(zhǎng)的并不會(huì)造成數(shù)據(jù)丟失,所以默認(rèn)可以自動(dòng)轉(zhuǎn)換?! ?/p>
例如:
long lNum = 5; //不報(bào)錯(cuò),因?yàn)閕nt自動(dòng)轉(zhuǎn)換為long類(lèi)型,不會(huì)報(bào)錯(cuò) float fNum = 7; //不報(bào)錯(cuò),因?yàn)閕nt自動(dòng)轉(zhuǎn)換為float類(lèi)型,不會(huì)報(bào)錯(cuò) double dNum = 10; //同上
但是,當(dāng)浮點(diǎn)直接量(例如:1.2等),JVM虛擬機(jī)默認(rèn)為double類(lèi)型,如果直接賦值給float就會(huì)引起編譯器報(bào)錯(cuò)。
float fNum = 1.2; //報(bào)錯(cuò),因?yàn)?.2虛擬機(jī)是默認(rèn)為double類(lèi)型,不能直接賦值給float類(lèi)型變量 float fNew = 1.3f;//正確,因?yàn)槲簿Y添加了f,即告訴了虛擬機(jī)1.3屬于float類(lèi)型變量
3、總結(jié)
所以,當(dāng)Java中遇到這三種類(lèi)型變量需要賦直接量時(shí)候,最好都添加上相應(yīng)的尾綴。這樣不僅會(huì)防止編譯器報(bào)錯(cuò),也會(huì)增加程序的可讀性?! ?/p>
但是下面這種情況就算添加尾綴也是錯(cuò)的,因?yàn)槲簿Y僅是為了告訴虛擬機(jī)該直接數(shù)屬于什么數(shù)據(jù)類(lèi)型,而不能實(shí)現(xiàn)數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換。
long lNum = 1.2L; //錯(cuò)誤,double類(lèi)型數(shù)據(jù)不能直接賦值給long類(lèi)型 long lNew = (long)1.2; //正確,double類(lèi)型數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為long類(lèi)型
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
對(duì)dbunit進(jìn)行mybatis DAO層Excel單元測(cè)試(必看篇)
下面小編就為大家?guī)?lái)一篇對(duì)dbunit進(jìn)行mybatis DAO層Excel單元測(cè)試(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
在Java的Spring框架的程序中使用JDBC API操作數(shù)據(jù)庫(kù)
這篇文章主要介紹了在Java的Spring框架的程序中使用JDBC API操作數(shù)據(jù)庫(kù)的方法,并通過(guò)示例展示了其存儲(chǔ)過(guò)程以及基本SQL語(yǔ)句的應(yīng)用,需要的朋友可以參考下2015-12-12
初步解析Java中AffineTransform類(lèi)的使用
這篇文章主要介紹了Java中AffineTransform類(lèi)的使用,AffineTransform類(lèi)經(jīng)常被用來(lái)處理圖片,需要的朋友可以參考下2015-10-10
SpringCloud Feign傳遞HttpServletRequest對(duì)象流程
HttpServletRequest接口的對(duì)象代表客戶(hù)端的請(qǐng)求,當(dāng)客戶(hù)端通過(guò)HTTP協(xié)議訪問(wèn)Tomcat服務(wù)器時(shí),HTTP請(qǐng)求中的所有信息都封裝在HttpServletRequest接口的對(duì)象中,這篇文章介紹了Feign傳遞HttpServletRequest對(duì)象的流程,感興趣的同學(xué)可以參考下文2023-05-05
劍指Offer之Java算法習(xí)題精講鏈表與二叉樹(shù)專(zhuān)項(xiàng)訓(xùn)練
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03
SpringBoot yaml中的數(shù)組類(lèi)型取值方式
這篇文章主要介紹了SpringBoot yaml中的數(shù)組類(lèi)型取值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

