2015-09-11 40 views
0

我會用toEngineeringString()但它並不作品:的BigDecimal toEngineeringString不工作

Log.v("smslms",BigDecimal.valueOf(1_000_0000_000_000_000L).toEngineeringString());` 

輸出:

09-11 16:26:12.221 18492-18492/skarwild.game V/smslms﹕ 10000000000000000 
+0

請注意,您的「部分」中的數字有四個0英寸,BTW。你的意思是? –

回答

3

它的表現完全一樣documented

返回一個字符串它代表toString()方法中描述的BigDecimal,除了如果使用指數表示法, 10被調節到999

是三(工程符號)的倍數,使得非零值的整數部分將是範圍爲1現在toString()指定:

一個標準規範的字符串通過以下步驟創建BigDecimal的表單:首先,BigDecimal的非標度值的絕對值將被轉換爲基數爲10的字符串,使用字符'0'到'9'且不包含前導零(除非其值爲零,在這種情況下使用單個「0」字符)。

接下來,計算調整後的指數;這是否定的縮放比例,加上轉換後的非縮放值中的字符數,少一個。即-scale +(ulength-1),其中ulength是以十進制數字(其精度)表示的非縮放值的絕對值長度。

如果比例大於或等於零,且調整後的指數大於或等於-6,則該數字將轉換爲字符形式而不使用指數表示法。

在我們的情況下,比例尺爲0,所以調整後的指數爲16(或附近的東西)。因此,該值將轉換爲字符形式而不使用指數表示法。