A palavra-chave strictfp em Java

A palavra-chave strictfp em Java

1. Introdução

Por padrão, os cálculos de ponto flutuante em Java dependem da plataforma. E assim, a precisão do resultado de ponto flutuante depende do hardware em uso.

Neste tutorial, aprenderemos comouse strictfp in Java to ensure platform-independent floating-point computations.

2. strictfp Uso

Podemos usar a palavra-chavestrictfp como um modificador sem acesso para classes, métodos não abstratos ou interfaces:

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);
}

Quando declaramos uma interface ou classe comstrictfp, all de seus métodos membros e outros tipos aninhados herdam seu comportamento .

No entanto, por favor,note that we’re not allowed to use strictfp keyword on variables, constructors or abstract methods.

Além disso, para os casos em que temos uma superclasse marcada com ela, isso não fará com que nossa subclasse herde esse comportamento.

3. Quando usar?

A palavra-chave Javastrictfp é útil sempre que nos importamos muito com o comportamento determinístico de todos os cálculos de ponto flutuante:

@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));
}

Como a classeScientificCalculator usa essa palavra-chave, o caso de teste acima será aprovado em todas as plataformas de hardware. Observe queif we don’t use it, JVM is free to use any extra precision available on the target platform hardware.

Um caso de uso popular do mundo real, pois é um sistema que executa cálculos medicinais altamente sensíveis.

4. Conclusão

Neste tutorial rápido, falamos sobre quando e como usar a palavra-chavestrictfp em Java.

Como de costume, todas as amostras de código apresentadas estão disponíveisover on GitHub.