これは不可能かもしれませんが、質問しても問題ないと思いました。非整数の 10 進数を 8 進数に変換する必要があるプログラムがあります。私が知る限り、Java は 8 進数の整数のみを自動的に処理できます。私は、このような数を 8 の累乗に分解することを含む、ちょっとしたコツをまとめました。
.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++;
}
}