저는 고등 학교의 초급 Java 과정에만 있기 때문에 Java를 배우고 있습니다. 여기에 내가 뉴튼 - 랩슨 방법을 사용하여 10.6의 큐브 루트의 근사치를 얻기 위해 노력하고있어Java 프로그램이 끝나지 않습니다
public static void CubeRoot(double number, double guess)
{
double r = number;
double a = guess;
double b = 0;
double goal = Math.pow(number,.333333333333);
while (Math.round(b * 10000)/10000 != Math.round(goal * 10000)/10000)
{
b = ((1/3)*((r/(a*a))+(2*a)));
b = a;
}
System.out.println(b);
}
내 프로그램입니다. 문제는 프로그램이 실행되지만 아무것도 인쇄하지 않는다는 것입니다.
루프 내부에 인쇄물을 추가하면 'b'에 무슨 일이 일어나는지 알 수 있습니다. 또한 귀하의 RHS는 상수이기 때문에 한 번 계산하여 재사용하는 것이 좋습니다. – John3136
부동 소수점 숫자는 까다 롭습니다. 이와 같은 상황에서 엄격한 평등은 사용자가 확인해야하는 것이 아닙니다. 대신 근사값이 대상의 일부 범위 내에있을 때 루프를 종료해야합니다. – Pointy
@Pointy 이런 뜻인가요? 반면 (! = B + 0.0001 목표 || B = 목표! - 0.0001) \t \t \t \t { \t B = ((1.0/3.0) * ((R/(A * A)) + (2 * 에이))); \t \t \t a = b; \t \t} – PirateDong