Bevar lange numeriske identifikatorer uten presisjonstap
En lang identifikator kan bli endret av tallkonvertering selv når den ikke har innledende nuller.
En identifikator med mange sifre kan miste presisjon hvis den behandles som flyttall. Fravær av innledende nuller gjør ikke numerisk behandling trygg. To forskjellige identiteter kan bli samme lagrede verdi ved avrunding.
RFC 8259 beskriver interoperabilitetsgrenser for JSON-tall. Heltall fra −(2^53−1) til 2^53−1 kan representeres nøyaktig i vanlig binær 64-bits flyttallsbehandling. Større heltall kan kreve en annen tallimplementasjon. JSON-formatet forbyr ikke store tall, men alle mottakere behandler dem ikke nøyaktig.
To identiteter som kolliderer etter tallkonvertering
Syntetiske identifikatorer, uten forbindelse til virkelige konti eller kunder.
| Kildens tekstidentitet | Etter konvertering til binært 64-bits flyttall | Kontroll |
|---|---|---|
9007199254740992 | 9007199254740992 | Denne verdien er representerbar |
9007199254740993 | 9007199254740992 | Et siffer er endret ved avrunding |
| Begge bevart som tekst | To forskjellige tegnrekker | Identitetene er fortsatt atskilt |
Grensen er altså ikke at hvert større tall alltid blir feil. Risikoen er at ikke alle nærliggende heltall kan skilles. En prøve med bare den første verdien ville derfor gitt falsk trygghet.
Test hele rundreisen
Send de to tekstverdiene gjennom kilden, eksporten, eventuell regnearkbehandling og mottakerens videre eksport. Sammenlign tegn for tegn ved slutten. En korrekt visning i første skjerm er ikke nok hvis verdien senere parses som tall.
Ved regneark må identitetskolonnen importeres som tekst før automatisk talltolking skjer. Det hjelper ikke å formatere som tekst etter at sifrene allerede er avrundet. Hent da originalverdien på nytt.
- Kontroller både JSON-type og faktisk parserbehandling.
- Test naboverdier rundt presisjonsgrensen.
- Test lange verdier som regnearket viser med eksponentnotasjon.
- Sammenlign antall unike identiteter før og etter overføring.
- Bevar original sifferrekke som kontrollgrunnlag.
Avklar tallstøtte uten å anta den
En mottaker kan støtte vilkårlig store heltall, men det beviser ikke at mellomlag og klienter gjør det samme. Dokumenter derfor hvert ledd. For en identifikator som aldri skal regnes med, er tekst ofte en enklere kontrakt enn å kreve identisk tallpresisjon overalt.
Hvis en ekstern tjeneste krever numerisk type, må dens presisjonsgaranti og alle mellomledd undersøkes. En lokal tekstkonvertering gir ikke automatisk kompatibilitet med tjenestens kontrakt.
Denne oppgaven handler om bevart sifferidentitet. Unikhet på tvers av selskaper er en annen kontroll: en perfekt bevart kode kan fortsatt være gjenbrukt i en annen kilde. Begge egenskaper må være dokumentert før automatisk matching.
Godkjenn først når hver prøverekke kommer tilbake uendret og de to naboverdiene fortsatt er forskjellige. Riktige beløpssummer kan ikke avsløre tap av identifikatorsifre.
Les identifikatorer som tekst og kildespor.