Я на пороге портирования некоторого кода на С ++ на java, и я продолжаю сталкиваться с случаями, когда кто-то, кто это написал, делал следующее:
double c = (1.0/(a+1.0)*pow(b, a+1.0));
double d = (1./(integral(gamma, dmax)-integral(gamma, dmin)))*(integral(gamma+1, dmax)-integral(gamma+1, dmin));
Вместо:
double c = pow(b, a+1.0)/(a+1.0);
double d = (integral(gamma+1, dmax)-integral(gamma+1, dmin))/(integral(gamma, dmax)-integral(gamma, dmin));
Второе кажется намного понятнее, и если я не ошибаюсь в порядке операций в C ++, они должны делать то же самое. Есть ли основания делать первое, а не второе? Единственное, о чем я мог подумать, это какой-то странный случай с точностью.