Это может быть невозможно, но я подумал, что спрашивать не повредит.
У меня есть программа, которая должна преобразовать нецелые десятичные дроби в восьмеричную запись. Из того, что я могу сказать, 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++;
}
}