Рубрики
Без рубрики

Ключевое слово strictfp в Java

Узнайте, когда и как использовать ключевое слово strictfp в Java.

Автор оригинала: Shubhra Srivastava.

1. Введение

По умолчанию вычисления плавающих тоных тоок на Java зависят от платформы. Таким образом, точность результатов плавающей точки зависит от использования оборудования.

В этом учебнике мы узнаем, как использовать strictfp на Java для обеспечения независимых платформ плавающих тоных вычислений.

2. строгое использование

Мы можем использовать strictfp ключевое слово как модификатор не доступа для классов, неа абстрактных методов или интерфейсов:

public strictfp class ScientificCalculator {
    ...
    
    public double sum(double value1, double value2) {
        return value1 + value2;
    }

    public double diff(double value1, double value2) { 
        return value1 - value2; 
    }
}

public strictfp void calculateMarksPercentage() {
    ...
}

public strictfp interface Circle {
    double computeArea(double radius);
}

Когда мы объявляем интерфейс или класс с strictfp, все его методы членов и другие вложенные типы наследуют его поведение.

Однако, пожалуйста, обратите внимание, что мы не можем использовать strictfp ключевое слово на переменных, конструкторах или абстрактных методах.

Кроме того, в тех случаях, когда у нас есть суперкласс, отмеченный им, это не сделает наш подкласс наследовать это поведение.

3. Когда использовать?

Java strictfp ключевое слово пригодится всякий раз, когда мы заботимся много о детерминистическом поведении всех плавающей точки вычислений:

@Test
public void whenMethodOfstrictfpClassInvoked_thenIdenticalResultOnAllPlatforms() {
    ScientificCalculator calculator = new ScientificCalculator();
    double result = calculator.sum(23e10, 98e17);
    assertThat(result, is(9.800000230000001E18));

    result = calculator.diff(Double.MAX_VALUE, 1.56);
    assertThat(result, is(1.7976931348623157E308));
}

С Научно-технический класс использует это ключевое слово, вышеуказанный тестовый случай пройдет на всех аппаратных платформах. Обратите внимание, что если мы не используем его, JVM может свободно использовать любую дополнительную точность, доступную на оборудовании целевой платформы.

Популярным реальным случаем использования для него является система, выполняя высокочувствительные лекарственные расчеты.

4. Заключение

В этом быстром учебнике мы говорили о том, когда и как использовать strictfp ключевое слово в Java.

Как обычно, все представленные образцы кода доступны более на GitHub .