这可能是不可能的,但我想问也无妨。我有一个程序需要将非整数小数转换为八进制表示法。据我所知,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++;
}
}