Java:為什么我不能用科學記數法聲明整數類型? [英] Java: Why can't I declare integer types using scientific notation?

查看:0
本文介紹了Java:為什么我不能用科學記數法聲明整數類型?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我可以很容易地一目了然地將2e15讀成"兩千萬億",但對于2000000000000000,我必須計算零,這需要更長的時間,可能會導致錯誤。

為什么不能使用文字聲明intlong,如2e91.3e6?我知道10的負冪(如2e-3)或小于小數位數的10的冪(如1.0003e3)會產生浮點數,但為什么Java不允許這樣的聲明,而只是截斷浮點部分,并在結果值不是整數的情況下發出溫和警告?

這是一個糟糕的主意,有沒有技術原因,或者這完全是類型安全的問題?對于編譯器來說,簡單地解析像

這樣的語句不是很簡單嗎

long x = 2e12ASlong x = 2000000000000 //OK for long

int y = 2.1234e3ASint y = 2123.4 //warning: loss of precision

推薦答案

因為當您使用科學記數法時,您將創建a floating point number(在您的示例中為雙精度)。并且不能將浮點賦給整數(這將是縮小基元轉換,which is not a valid assignment conversion)。

因此這也不起作用,例如:

int y = 2d; //can't convert double to int

您有幾個選項:

  • 將浮點顯式轉換為整數:int y = (int) 2e6;
  • 在Java 7+中使用千分隔符:int y = 2_000_000;

這篇關于Java:為什么我不能用科學記數法聲明整數類型?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!

查看全文
登錄 關閉
掃碼關注1秒登錄
發送“驗證碼”獲取 | 15天全站免登陸
全免费A级毛片免费看无码播放