>  기사  >  Java  >  Java의 Strictfp

Java의 Strictfp

WBOY
WBOY원래의
2024-08-30 15:36:00388검색

Java에서 strictfp의 주요 기능은 부동 소수점 변수가 작동 중일 때 모든 플랫폼에서 동일한 결과를 제공하는 것입니다. 과거 James Gosling과 그의 팀이 Java를 개발할 때 언어의 주요 측면 중 하나는 플랫폼 독립성이었습니다. 동일한 코드를 다른 컴퓨터에서 컴파일, 해석 및 실행하고 결과가 동일하고 프로세서에 의해 조작되지 않는지 확인합니다.

다양한 플랫폼에서 부동 소수점을 계산할 때 CPU별로 부동 소수점을 처리하는 하드웨어 기능에 따라 결과가 달라질 수 있습니다. Strictfp를 사용하면 모든 플랫폼에서 정확한 부동 소수점 출력을 얻을 수 있습니다. 부동 소수점 산술 표준인 IEEE 754를 통해 strictfp가 JVM 1.2 버전에 도입되었습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

다양한 CPU의 경우 표준 정밀도가 다를 수 있습니다. 32비트 정밀도는 x86 시스템의 경우 62비트 정밀도와 다릅니다. strictfp를 사용하면 동일한 코드가 다른 플랫폼에서 실행될 때 정밀도가 다르기 때문에 출력이 조작되지 않도록 할 수 있으며 이는 더 높은 정밀도의 플랫폼에서 잘 작동합니다. strictfp를 부동 소수점 엄격함을 의미하는 FP Strict로 이해하세요.

Strictfp의 구문

strictfp는 간단하며 strictfp라는 키워드로 시작합니다. 다음은 클래스, 인터페이스 및 메소드의 구문입니다.

1. 수업

strictfp class sample1{
// code here will me implicitly strictfp.
}

2. 인터페이스

strictfp interface sample2 {
// methods here will be implicitly strictfp
}

3. 방법

class India {
strictfp void population()
}

위 샘플에서는 클래스와 인터페이스에 strictfp 키워드만 추가했습니다. 위의 예는 strictfp 키워드를 어떻게 사용해야 하는지 보여주며, 아래는 strictfp 키워드를 사용하지 말아야 할 경우의 예입니다.

class sample1{
strictfp float a;
}

여기서는 변수에 strictfp 키워드를 할당해도 작동하지 않습니다. 클래스나 인터페이스와 함께 엄격하게 전달되어야 합니다.

Strictfp 구현 예시

아래는 Strictfp에서 구현한 예입니다.

예시 #1

이제 코드 예제에서 이를 구현하여 strictfp 키워드의 작동을 보여드리겠습니다.  다음은 동일한 프로그램입니다.

코드:

public class Test  {
public strictfp double add()
{
double number1 = 10e+10;
double number2 = 6e+08;
return (number1+number2);
}
public static strictfp void main(String[] args)
{
Test example = new Test();
System.out.println(example.add());
}
}

출력:

Java의 Strictfp

위 코드에 대한 설명: Test 클래스 정의로 시작한 다음 double 데이터 유형의 메소드를 생성하고 이를 strictfp 키워드에 할당했습니다. add()에서 우리는 double 데이터 유형의 number1과 number2라는 두 개의 변수를 생성했고, 다음 줄에서 메소드는 이 두 변수의 덧셈을 반환합니다. 나중에 우리는 strictfp 기능을 갖춘 메인 클래스를 갖게 되며 내부의 코드 블록은 strictfp 속성을 상속받습니다. 클래스의 새 객체를 생성하고 결국 두 변수의 추가된 값을 간단히 인쇄하는 출력 print 문을 갖게 됩니다.

예시 #2

이제 동일한 strictfp 키워드를 다른 프로그램에 적용해 보겠습니다. 여기서는 계산을 하지 않습니다. 대신 float 변수에 값을 전달하고 strictfp 키워드로 인쇄하겠습니다.

코드:

public class new_strictfp {
float f = 9.381f;
strictfp public void displayValue(){
System.out.println(f);
}
public static void main(String[] args) {
new_strictfp Demo = new new_strictfp ();
Demo.displayValue();
}
}

출력:

Java의 Strictfp

위 코드에 대한 설명: 이것은 strictfp 키워드를 구현한 또 다른 예입니다. 저는 공개 클래스로 시작하여 float 데이터 유형과 값을 사용하여 새 변수를 만들었습니다. 그런 다음 부동 소수점 값을 인쇄하는 메서드를 만들고 메인 클래스에서 클래스의 개체를 초기화했습니다. 객체 뒤에는 이전에 생성된 메서드를 호출하는 출력 문이 있습니다. 여기서 생성된 메소드는 strictfp를 활성화하여 할당된 부동 소수점 값이 그대로 인쇄된다는 의미입니다.

기억해야 할 규칙

모든 프로그래밍 언어의 다른 키워드와 마찬가지로 Java의 strictfp에는 용도와 규칙이 있으며 의도한 결과를 얻으려면 지정된 규칙을 따라야 합니다.  이제 키워드를 구현하기 전에 몇 가지 규칙을 이해해 보겠습니다.

  • strictfp 키워드는 생성자로 구현할 수 없습니다. 클래스, 인터페이스, 메소드와 잘 작동합니다.
  • 인터페이스나 클래스와 함께 strictfp를 선언하면 내부의 모든 메서드와 중첩 유형에 대해 strictfp가 암시적으로 구현됩니다.
  • strictfp는 추상 클래스나 인터페이스로 구현할 수 있지만 추상 메서드로는 구현할 수 없습니다.
  • 생성자와 함께 strictfp는 변수와 함께 사용할 수 없습니다. 앞서 언급한 샘플 코드를 참고하세요.

위에서 언급한 규칙을 따르면 strictfp를 올바르게 사용할 수 있으며 부동 소수점 정밀도가 서로 다른 결과를 내는 차이를 피할 수 있습니다.

Java에서 Strictfp의 장점

다음은 키워드에 따른 장점입니다. strictfp 사용의 이점은 개발자의 관점에서 다양합니다. 몇 가지가 아래에 나열되어 있습니다:

  • 다양한 시스템에서 부동 소수점 결과의 정확성
  • strictfp는 부동 소수점 연산의 정밀도와 속도를 활용합니다.
  • 32비트와 64비트에 대해 전혀 편견이 없으며 더 나은 결과에 중점을 둡니다.
  • 마지막으로 이 키워드를 사용해도 불이익이 없고, 시간 압축률이나 실행 속도가 증가하지 않습니다.
  • strictfp 키워드와 해당 기능이 없으면 부동 소수점 출력이 JVM 및 JIT 컴파일러에 의해 대상 시스템의 CPU 정밀도 지점에 따라 조작될 수 있다는 점을 이해하는 것이 중요합니다.
  • 이것은 "Write Once Run Anywhere"라는 Java 프로그래밍 언어의 기본을 보장하고 소스 머신을 제외한 모든 곳에서 다르거나 잘못된 결과가 나오지 않도록 하는 또 다른 더 나은 방법입니다.

결론 – Java의 Strictfp

Java의 Strictfp 키워드가 무엇인지 이해한 다음 용도를 조사했지만 이 키워드를 사용하지 않았습니다. 이는 IEE 754의 부동 소수점 표준에 따라 JVM 1.2에서 도입되었습니다. 우리는 strictfp 키워드를 구문으로 시연하고 나중에 예제로 구현했습니다. 동일한 결과를 보장하는 수식어입니다.

위 내용은 Java의 Strictfp의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.