淺談Java數(shù)值類型的轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換
數(shù)值類型之間的轉(zhuǎn)換

6個(gè)實(shí)心箭頭箭頭表示無(wú)信息丟失的轉(zhuǎn)換;
3個(gè)虛箭頭表示可能有精度損失的轉(zhuǎn)換.
當(dāng)使用上面兩個(gè)數(shù)值進(jìn)行二元操作時(shí),先要將兩個(gè)操作數(shù)轉(zhuǎn)換為同一類型,然后再進(jìn)行計(jì)算.
規(guī)則:`兩個(gè)數(shù)中小類型的值將自動(dòng)轉(zhuǎn)換為大類型的值.
小轉(zhuǎn)大可以,但是大轉(zhuǎn)小會(huì)損失精度,則需要強(qiáng)制轉(zhuǎn)換.
強(qiáng)制類型轉(zhuǎn)換
語(yǔ)法格式
在圓括號(hào)中給出想要轉(zhuǎn)換的目標(biāo)類型,后面緊跟待轉(zhuǎn)換的變量名.
例:
double m = 9.99;
int n = (int)m;
其中n的值為9.
強(qiáng)制類型轉(zhuǎn)換通過(guò)截?cái)嘈?shù)部分將浮點(diǎn)值轉(zhuǎn)換為整形.
Math.Round()
返回最接近參數(shù)的 int。結(jié)果將舍入為整數(shù):加上 1/2,對(duì)結(jié)果調(diào)用 floor 并將所得結(jié)果強(qiáng)制轉(zhuǎn)換為 int 類型。換句話說(shuō),結(jié)果等于以下表達(dá)式的值:
(int)Math.floor(a + 0.5f)
特殊情況如下:
如果參數(shù)為 NaN,那么結(jié)果為 0。
如果結(jié)果為負(fù)無(wú)窮大或任何小于等于 Integer.MIN_VALUE 的值,那么結(jié)果等于 Integer.MIN_VALUE 的值。
如果參數(shù)為正無(wú)窮大或任何大于等于 Integer.MAX_VALUE 的值,那么結(jié)果等于 Integer.MAX_VALUE 的值。
public static int round(float a) :
若傳入Round方法的值為float,返回值為int,可直接用int類型的值接收即可.
public static long round(double a) :
但傳入Round方法的值為double時(shí),返回值為long,則需要手動(dòng)強(qiáng)轉(zhuǎn)為int類型.
代碼示例:
public class MathRoundDemo {
public static void main(String[] args) {
double a = 1.847;
System.out.println(Math.round(a));
float b = 1.847f;
System.out.println(Math.round(b));
int c = (int)Math.round(a);
System.out.println(c);
System.out.println(Math.round(a*100)/100.0);
System.out.printf("%.2f",a);
}
}
/*輸出:
2
2
2
1.85
1.85
*/
代碼分析:
float b = 1.847f;若不添加后綴f,則需要將1.847進(jìn)行強(qiáng)轉(zhuǎn),默認(rèn)小數(shù)位double類型.賦給float(大轉(zhuǎn)小會(huì)損失精度,則需要強(qiáng)制轉(zhuǎn)換).
int c = (int)Math.round(a);傳入的參數(shù)為double類型,返回類型為long,同理,大轉(zhuǎn)小,需要強(qiáng)制轉(zhuǎn)換.

對(duì)于想要進(jìn)行小數(shù)位數(shù)的保留方法,此代碼中想要1.847保留小數(shù)點(diǎn)后兩位:
System.out.println(Math.round(a*100)/100.0);
原理:小數(shù)點(diǎn)先右移兩位后應(yīng)用Math.round方法進(jìn)行四舍五入后,在將小數(shù)點(diǎn)向左移兩位.
System.out.printf("%.2f",a);
原理:應(yīng)用了格式化輸出,推薦使用這種方式簡(jiǎn)單高效穩(wěn)定.具體介紹請(qǐng)看:Java中格式化輸出
以上所述是小編給大家介紹的Java數(shù)值類型的轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java 利用dom方式讀取、創(chuàng)建xml詳解及實(shí)例代碼
這篇文章主要介紹了Java 利用dom方式讀取、創(chuàng)建xml的相關(guān)資料,需要的朋友可以參考下2017-03-03
Springboot使用jxls實(shí)現(xiàn)同sheet多個(gè)列表展示
這篇文章主要介紹了Springboot使用jxls實(shí)現(xiàn)同sheet多個(gè)列表展示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用
本篇文章主要通過(guò)實(shí)例對(duì)適配器模式進(jìn)行了詳解,需要的朋友可以參考下2017-04-04
Java中ArrayList與LinkedList的使用及區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Java中ArrayList與LinkedList的使用及區(qū)別的相關(guān)資料,ArrayList和LinkedList都是實(shí)現(xiàn)了List接口的容器類,用于存儲(chǔ)一系列的對(duì)象引用,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
Redis緩存及熱點(diǎn)key問(wèn)題解決方案
這篇文章主要介紹了Redis緩存及熱點(diǎn)key問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
關(guān)于Java企業(yè)級(jí)項(xiàng)目開發(fā)思想
Java企業(yè)級(jí)項(xiàng)目開發(fā)思想。偶遇,讀有所得,遂分享給大家,本文不涉及案例,只談思想和理念,需要的朋友可以參考。2017-09-09
MybatisPlus自動(dòng)填充創(chuàng)建(更新)時(shí)間問(wèn)題
在開發(fā)數(shù)據(jù)庫(kù)相關(guān)應(yīng)用時(shí),手動(dòng)設(shè)置創(chuàng)建和更新時(shí)間會(huì)導(dǎo)致代碼冗余,MybatisPlus提供了自動(dòng)填充功能,通過(guò)實(shí)現(xiàn)MetaObjectHandler接口并重寫insertFill、updateFill方法,可以自動(dòng)維護(hù)創(chuàng)建時(shí)間、更新時(shí)間等字段,極大簡(jiǎn)化了代碼,這不僅提高了開發(fā)效率,也保證了數(shù)據(jù)的可追溯性2024-09-09
springboot實(shí)現(xiàn)防重復(fù)提交和防重復(fù)點(diǎn)擊的示例
這篇文章主要介紹了springboot實(shí)現(xiàn)防重復(fù)提交和防重復(fù)點(diǎn)擊的示例,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下2020-09-09

