Kommat som blåste upp varje europeiskt pris med 100x

Ein Preisparser, der Kommas entfernte, las die deutschen 9,99 € als 999. Nichts stürzte ab, nichts sah falsch aus, und das Umsatzmodell meldete stillschweigend hundertmal zu hohe Zahlen.

Priser är den enda indata där ett storleksordningsfel ser helt plausibelt ut på ett diagram. En prenumerationsapp som visar $6,499 per år är absurd om man stannar upp och tänker, och helt oanmärkningsvärd om man skannar en instrumentpanel.

Vad koden gjorde

Parsern tog bort tusentalsavgränsare innan den matchade siffror, vilket är korrekt för engelska och fel för större delen av Europa. Den tyska butiken skriver 9,99 €, kommatecknet är decimalpunkten, och att ta bort det ger 999.

Eftersom intäktsmodellen läser prisstegen från den butik som visas på skärmen, gav en öppnad spårad app på den tyska fliken ett ankarspris på 6,499 istället för 44.36. En överskattning på 147x, utan fel, utan varning och utan synliga symptom.

Lösningen, och varför språkdetektering var fel svar

Den uppenbara reparationen är att slå upp butiken och tillämpa dess konvention. Det gjorde vi inte, eftersom parsern också får strängar vars ursprung den inte kan vara säker på, och en uppslagning som tyst faller tillbaka på engelska återskapar felet i en svårare att hitta form.

Istället bestäms decimalavgränsaren av positionen. Om både en punkt och ett komma förekommer, är den högra decimalpunkten: 1.234,56 och 1,234.56 tolkas båda korrekt utan att man vet vilket land de kommer ifrån. Om bara en förekommer, är det en tusentalsavgränsare när exakt tre siffror följer, och en decimalpunkt annars.

Samma bugg, med ett annat suffix

Sedan Indonesien. Apple skriver 829,000 rupiah som "Rp 829ribu", där ribu är indonesiska för tusen. Läs det bokstavligt så är det 829 rupiah, ungefär fem amerikanska cent, vilket mot ett $69.99 amerikanskt pris skulle ha publicerats som det mest dramatiska lokaliseringsfyndet på skärmen.

Magnitudord hanteras nu. Men den tabellen kan aldrig bli komplett, eftersom vilken butik som helst kan skriva ut ett ord som ingen här har sett, så det finns också ett golv: ett pris som omvandlas till under 2% av basmarknaden hålls tillbaka som otillförlitligt istället för att publiceras. Den billigaste äkta marknaden vi mäter, Turkiet, ligger på 5%, så skyddet fångar storleksordningsfel utan att ifrågasätta verklig prissättning.

Relaterad

Blog · Fallstudier · Free ASO tools · Produkter · Integritet och villkor · AsoTheory