2013-11-01 3 views
0

소프트웨어 개발 강의 과제를 수행 중이며 for 루프를 코딩하라는 메시지가 표시되어 사용자에게 두 개의 숫자를 묻는 메시지가 표시됩니다. 표가 표시됩니다.제곱 함수 오류 - 정밀도가 손실 될 수 있음

이 도움이 경우는, BlueJ의에서 코딩 (?)

이것은 내가 지금까지 내가이 루프 outwith 두 개의 번호를 물어 모두를 설정 한 루프하지만, 수레와 i 변수는있다 i을 두 번;

for (i = lowNum; i <= highNum; i++) { 
     //find square of number 
      squareNum = i * i; 

     //find cube of number 
      cubeNum = i * i * i; 

     //find square root of number 
      rootNum = Math.sqrt(i); 

     //display under appropriate headings 
} 

내가 시도하고 실행

, 컴파일러 오류가 Math.sqrt(i); 라인에 i 강조 내가 떠 변수 유형을 변경하는 시도했지만 다음과 유사한 오류 (float과 double 반전되는) possible loss of precision, required: float; found: double; 말 온다 코드

누구든지 해결 방법을 알고 있습니까?

답변

4

Math.sqrt()은 double을 반환합니다. float에 다음과 같이 캐스팅하십시오. (float)Math.sqrt()

0

자신의 코드에서 double을 사용하는 것이 더 좋지 않습니까? 그렇다면 당신은 타입 캐스팅에 귀찮게 할 필요가 없다. 그리고 b) 실제로 컴파일러가 당신에게 경고하려고 시도하는 정밀도의 손실에 실제로 희생 될 가능성이 적다.

캐스트를 수행하는 것은 컴파일러에게 IMO의 도움을 받아들이는 대신 종료하는 것과 같습니다.

+0

나는 그것을 두 배로 설정하려고했지만 사각형과 큐브가 작동하지 않습니다. –

관련 문제