程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java長整除成績淺談

java長整除成績淺談

編輯:關於JAVA

java長整除成績淺談。本站提示廣大學習愛好者:(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運算來履行全部盤算。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved