The strictfp Keyword i Java

1. Introduksjon

Som standard er flytpunktsberegningene i Java plattformavhengig. Og så avhenger flytepunktets presisjon av maskinvaren som er i bruk.

I denne opplæringen lærer vi hvordan du gjør det bruk strictfp i Java for å sikre plattformuavhengig beregning av flytende punkt.

2. strictfp Bruk

Vi kan bruke strictfp nøkkelord som et ikke-tilgangsmodifikator for klasser, ikke-abstrakte metoder eller grensesnitt:

offentlig strictfp klasse ScientificCalculator {... offentlig dobbel sum (dobbel verdi1, dobbel verdi2) {returverdi1 + verdi2; } offentlig dobbel diff (dobbel verdi1, dobbel verdi2) {returverdi1 - verdi2; }} public strictfp void calculateMarksPercentage () {...} public strictfp interface Circle {double computeArea (double radius); }

Når vi erklærer et grensesnitt eller en klasse med strictfp, alle dets medlemsmetoder og andre nestede typer arver densoppførsel.

Vær så snill Vær oppmerksom på at vi ikke har lov til å bruke strictfp nøkkelord på variabler, konstruktører eller abstrakte metoder.

I tillegg, for tilfeller når vi har en superklasse merket med den, vil det ikke føre til at underklassen vår arver den oppførselen.

3. Når skal jeg bruke?

Java strictfp nøkkelord er nyttig når vi bryr oss mye om den deterministiske oppførselen til alle flytende punktberegninger:

@Test offentlig ugyldig nårMethodOfstrictfpClassInvoked_thenIdenticalResultOnAllPlatforms () {ScientificCalculator calculator = new ScientificCalculator (); dobbelt resultat = kalkulator.sum (23e10, 98e17); assertThat (resultat, er (9.800000230000001E18)); resultat = calculator.diff (Double.MAX_VALUE, 1.56); assertThat (resultat, er (1.7976931348623157E308)); }

Siden ScientificCalculator klasse bruker dette nøkkelordet, vil ovennevnte testtilfelle videreføre alle maskinvareplattformer. Vær oppmerksom på at hvis vi ikke bruker det, står JVM fritt til å bruke ekstra presisjon som er tilgjengelig på målplattformens maskinvare.

En populær brukssak for den er et system som utfører høysensitive medisinske beregninger.

4. Konklusjon

I denne raske opplæringen snakket vi om når og hvordan du bruker strictfp nøkkelord i Java.

Som vanlig er alle de presenterte kodeeksemplene tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found