Bedre StandardSend faginnspill

Bevar lange numeriske identifikatorer uten presisjonstap

En lang identifikator kan bli endret av tallkonvertering selv når den ikke har innledende nuller.

I denne veiledningen

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 tekstidentitetEtter konvertering til binært 64-bits flyttallKontroll
90071992547409929007199254740992Denne verdien er representerbar
90071992547409939007199254740992Et siffer er endret ved avrunding
Begge bevart som tekstTo forskjellige tegnrekkerIdentitetene 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.

Kilde