激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java長整除問題淺談

java長整除問題淺談

2019-10-22 11:33java技術網 Java教程

這篇文章主要介紹了java長整除問題,有需要的朋友可以參考一下

代碼如下:


public class Change{ 
 public static void main(String args[]){ 
final long L1=24* 60 * 60 * 1000 * 1000;
final long L2=24* 60 * 60 * 1000;
System.out.println(L1/L2);
 } 
}
/**
*   output: 5
*/  

 

為什么輸出的是5呢?

再看下面的代碼輸出:

 

復制代碼代碼如下:


public class Change{ 
 public static void main(String args[]){ 
final long L1=24L* 60 * 60 * 1000 * 1000;
final long L2=24L* 60 * 60 * 1000;
System.out.println(L1/L2);
 } 
}
/**
*   output: 1000
*/

 

這個的輸出才是我們想要的結果。到底發生了什么?

      這是因為常數L1的計算“確實”溢出了。盡管計算的結果適合放入long中,并且其空間還有富余,但這個結果并不適合放入int中。這個計算完全是以int運算來執行的,并且只有在運算完成之后,其結果才被提升到long,而此時已經太遲了:計算已經溢出了,它返回的是一個小了200倍的數值。從int到long是一種拓寬原始類型轉換,它保留了(不正確的)數值。這個值之后被L2整除,而L2的計算是正確的,因為它適合int運算。這樣整除的結果就得到了5。

      那為什么是int運算來執行的呢?因為所有乘在一起的因子都是int數值。當你將兩個int數值相乘時,你將得到另一個int數值。java不具有目標確定類型的特性,只是一種語言特性,其含義是指存儲結果的變量的類型會影響到計算所使用的類型。

     通過使用long常量來替代int常量作為每一個乘積的第一個因子,就可以很容易的訂正這個程序。

     這個教訓很簡單:當你在操作很大的數字時,千萬要提防溢出,即使用來保存結果的變量已顯得足夠大,也并不意味著產生結果的計算具有正確的類型。當你拿不準時,就使用long運算來執行整個計算。

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲网站在线播放 | 久久久久久69 | 欧美城天堂网 | 日韩字幕在线观看 | 亚洲精品永久视频 | 久久人人爽人人爽人人片av高清 | 久久免费视频精品 | 欧美色淫 | 亚洲一区二区三区精品在线观看 | 一级大黄毛片 | 欧美不卡在线 | 91香草视频| 91午夜少妇三级全黄 | 亚洲人成在线播放网站 | 欧美乱淫| 丁香天堂网 | 毛片福利 | 九九热在线免费观看视频 | 欧美精品欧美 | 亚洲综合视频在线播放 | 欧美精品一区自拍a毛片在线视频 | xxxx69hd一hd| 亚洲特黄 | 欧美日韩国产综合网 | 看一级毛片 | 久久久久国产视频 | 亚洲精品v天堂中文字幕 | 亚洲午夜电影 | 国产精品久久久久久久久久尿 | 狠狠操操 | 欧美一级做性受免费大片免费 | 久久久综合| 黄色影院在线看 | 国产a级久久 | 男女污污视频网站 | 久久久久久久久浪潮精品 | 国产三级精品最新在线 | 依人九九宗合九九九 | 99re久久最新地址获取 | 欧美日韩一区三区 | 久久精品日产高清版的功能介绍 |