Čiarka, ktorá nafúkla každú európsku cenu 100-násobne

Analyzátor cien, ktorý odstránil čiarky, prečítal nemeckú cenu 9,99 € ako 999. Nič nespadlo, nič nevyzeralo zle a model príjmov potichu vykazoval čísla stokrát väčšie.

Ceny sú jediným vstupom, kde chyba rádu vyzerá na grafe úplne vierohodne. Aplikácia s predplatným, ktorá ukazuje $6,499 ročne, je absurdná, ak sa nad tým zamyslíte, a úplne nenápadná, ak prechádzate dashboard.

Čo kód robil

Parser odstraňoval oddeľovače tisícov pred párovaním číslic, čo je správne pre angličtinu a nesprávne pre väčšinu Európy. Nemecký obchod tlačí 9,99 €, čiarka je desatinná čiarka a jej odstránenie vytvorí 999.

Pretože model výnosov číta cenový rebríček z toho obchodu, ktorý je práve na obrazovke, otvorenie sledovanej aplikácie na nemeckej karte mu poskytlo kotvovú cenu 6,499 namiesto 44.36. Nadhodnotenie 147-násobné, bez chyby, bez varovania a bez viditeľného príznaku.

Oprava a prečo bola detekcia jazyka nesprávnou odpoveďou

Zjavná oprava je vyhľadať obchod a použiť jeho konvenciu. Neurobili sme to, pretože parser dostáva aj reťazce, ktorých pôvod si nemôže byť istý, a vyhľadávanie, ktoré potichu padne späť na angličtinu, znovu vytvorí chybu v ťažšie nájditeľnej forme.

Namiesto toho sa desatinný oddeľovač určuje podľa pozície. Ak sa vyskytuje bodka aj čiarka, tá pravá je desatinná čiarka: 1.234,56 a 1,234.56 sa obe analyzujú správne bez toho, aby bolo jasné, z ktorej krajiny pochádzajú. Ak sa vyskytuje len jeden, je to oddeľovač tisícov, keď za ním nasledujú presne tri číslice, a inak desatinná čiarka.

Tá istá chyba s inou príponou

Potom Indonézia. Apple tlačí 829,000 rupií ako "Rp 829ribu", kde ribu je indonézsky výraz pre tisíc. Doslova je to 829 rupií, asi päť amerických centov, čo by oproti americkej cene $69.99 bolo zverejnené ako najdramatickejší nález lokalizácie na obrazovke.

Slová vyjadrujúce rád sú teraz spracované. Ale táto tabuľka nikdy nemôže byť úplná, pretože ktorýkoľvek obchod môže vytlačiť slovo, ktoré na tejto strane ešte nikto nevidel, takže existuje aj spodná hranica: cena, ktorá po prepočte klesne pod 2% základného trhu, sa nezverejní ako nespoľahlivá. Najlacnejší skutočný trh, ktorý meriame, Turecko, je na 5%, takže ochrana zachytí chyby rádu bez spochybňovania skutočných cien.

Súvisiace

Blog · Prípadové štúdie · Free ASO tools · Produkty · Ochrana osobných údajov a podmienky · AsoTheory