這可能是不可能的,但我認爲它不能傷害要求。 我有一個程序需要將非整數小數轉換爲八進制符號。據我所知,Java只能自動處理整數八進制。我拼湊了一些雜物,其中包括將這個數字分解爲八個冪次,就像這樣。如何解析Java中的非整數八進制數?
.abcd = X *(1/8)+ Y *(1/64)+ Z *(1/512)+ ......
這將顯示爲「0.xyz 「, 如果那有意義的話。問題是,這導致了很多舍入/截斷錯誤的長數字。有一個更好的方法嗎?
(編輯) 這是我一直在使用來處理數字小數點右邊的算法:
double floatPartNum = Double.parseDouble("0." + temps[1]);
if (floatPartNum > 0) {
int p = 1;
result = result + ".";
while (floatPartNum > 0 && p < 16) {
double scale = 1/(Math.pow(8, p));
int modT = (int)(floatPartNum/scale);
result = result + modT;
double modScale = (double)modT * scale;
floatPartNum -= modScale;
p++;
}
}
這裏是我正在使用的算法。該點左側的部分被處理,就像它是一個整數一樣,所以我只包括處理該點右邊數字的部分: – Leonide 2012-02-14 04:46:54
糟糕,我忘了按回車貼東西... ' double floatPartNum = Double.parseDouble(「0。「+ temps [1]); if(floatPartNum> 0){p> 1; result = result +」。「; while(floatPartNum> 0 && p <16)double scale = 1 /( Math.pow(8,p)的); INT MODT =(int)的(floatPartNum /刻度); 結果=結果+ MODT; 雙modScale =(雙)MODT *規模; floatPartNum - = modScale; 的p ++; } } ' – Leonide 2012-02-14 04:47:47