嗨我試圖做一些計算單位轉換器即時通訊創建和絆倒了一個問題。long類型的字面量超出範圍
out10 = doubleInput/94605284000000000000000L;
Eclipse中說:「字面型長超出範圍」,我甚至不認爲這是可能的,但也許有些F你知道如何解決它?
嗨我試圖做一些計算單位轉換器即時通訊創建和絆倒了一個問題。long類型的字面量超出範圍
out10 = doubleInput/94605284000000000000000L;
Eclipse中說:「字面型長超出範圍」,我甚至不認爲這是可能的,但也許有些F你知道如何解決它?
你可以把它的雙重文本,而不是一個長期的文字,具有精度的一些損失。假設doubleInput
也是雙倍,並且輸出也是如此,那麼沒有理由不這樣做。如果你需要一個非常精確的大整數常量,使用一個bignum
(谷歌它)。
我如何去從長字面改變這雙重文本使用int或真正的數據類型,因爲輸出和doubleInput都是雙打的? – 2012-01-05 01:15:50
刪除L並添加一個小數點。你也可以在java中像'9.46e20D'那樣格式化一個雙重字面值,其中20是科學記數法中該數字的指數。 – Dan 2012-01-05 01:18:17
94605284000000000000000d是一個雙字面 – 2012-01-05 01:18:46
類型long
無法容納這麼大的價值。我建議你嘗試輸入BigDecimal,它可以保存任意大小的值。
new BigDecimal("94605284000000000000000")
應該工作。
在這種情況下,基本上有涉及兩個步驟:
int
在您的示例)。請參見下面的表達式。
int z = (int) 2147483647; //Compiles.
int a = (int) 2147483648; //Doesn't compile, because the literal `2147483648` is outside the range of `int`.
int b = (int) 2147483648L; //Compiles.
在您的例子,out10 = doubleInput/94605284000000000000000L;
,編譯器首先假定字面94605284000000000000000
作爲int
類型是外的int
(從-2147483648到2147483647)的有效範圍。因此,它發出編譯器錯誤。
你爲什麼不認爲這是可能的?你相信多頭有無限大小? long在Java中是64位有符號整數。 – 2012-01-05 01:19:11
因爲我不是習慣使用長雙,我不知道做他們的最大值和最小值的,總要過去 – 2012-01-05 01:24:09