Есть ли Java-эквивалент функции C/C++, называемый frexp? Если вы не знакомы, frexp - это defined by Wikipedia, чтобы «разбить число с плавающей запятой вниз на мантисса и экспонента».Есть ли Java-эквивалент frexp?
Я ищу реализацию с максимальной скоростью и точностью, но я бы предпочел бы иметь точность, если бы мог только выбрать ее.
Это пример кода из первой ссылки. Он должен сделать договор frexp немного более ясным:
/* frexp example */
#include <stdio.h>
#include <math.h>
int main()
{
double param, result;
int n;
param = 8.0;
result = frexp (param , &n);
printf ("%lf * 2^%d = %f\n", result, n, param);
return 0;
}
/* Will produce: 0.500000 * 2^4 = 8.000000 */
Я думал, что пакет Apache Commons Math может быть хорошим местом, чтобы найти это, но я ничего там не видел. Возможно, вы могли бы добавить в него запрос функции? Или, если вы решите сами его закодировать, поговорите с ними о включении его в библиотеку - кажется полезным для меня полезным дополнением. – Carl
@ Карл, я согласен, что это было бы полезно. Я очень хорошо знаю себя и свою рабочую нагрузку, поэтому я не собираюсь пытаться создать его самостоятельно. Я уверен, что смогу сделать 80% работы на 80% правильно со временем, когда я должен инвестировать, и это очень близко к худшему, чем бесполезно .... –
Реальный вопрос: почему frexp не нарушает float в два целых числа, но хочет по крайней мере float. Для разложения float, который не имеет смысла (подумайте о рекурсии .....) –