Имея число с плавающей запятой, я ищу String
представление рационального числа, аппроксимирующего десятичное (с точностью до заданного допуска ε в порядке ). Мой текущий подход таков:
String rationalize(double d)
{
String s = Double.toString(d);
s = s.substring(s.indexOf('.')+1, s.length());
return s + " / " + ApintMath.pow(new Apint(10), s.length()).toString();
}
Если вы не знакомы с ним,ApintMath.pow
будет работать даже с произвольно длинными числами, что хорошо, потому что я пытаюсь преобразовать десятичные дроби тысячами десятичных дробей. места. Производительность моего алгоритма ужасна.
Я приписываю это двум вещам, но их может быть и больше:
Как бы вы это сделали? Есть ли другие области, о которых я не говорил, которые замедляют меня?