Кома, яка збільшила кожну європейську ціну в 100 разів
Парсер цін, який видаляв коми, прочитав німецьку 9,99 € як 999. Нічого не впало, нічого не виглядало неправильно, а модель доходу тихо повідомляла цифри, у сто разів більші.
Ціни — це єдиний вхідний параметр, де помилка на порядок величини виглядає цілком правдоподібно на графіку. Застосунок за підпискою, що показує $6,499 на рік, є абсурдним, якщо зупинитися і подумати, і цілком звичайним, якщо ти просто скануєш дашборд.
Що робив код
Парсер видаляв роздільники тисяч перед зіставленням цифр, що правильно для англійської і неправильно для більшості Європи. Німецький магазин друкує 9,99 €, кома є десятковою крапкою, і її видалення дає 999.
Оскільки модель доходу зчитує цінову драбину з того магазину, який зараз на екрані, відкриття відстежуваного застосунку на німецькій вкладці підсунуло їй якірну ціну 6,499 замість 44.36. Завищення в 147 рази, без помилки, без попередження і без видимих симптомів.
Виправлення і чому визначення локалі було неправильною відповіддю
Очевидний ремонт — подивитися магазин і застосувати його конвенцію. Ми цього не зробили, бо парсер також отримує рядки, походження яких він не може бути впевненим, а пошук, який мовчки відкочується до англійської, відтворює помилку у важчій для знаходження формі.
Натомість десятковий роздільник визначається позицією. Якщо присутні і крапка, і кома, десятковою крапкою вважається найправіший символ: 1.234,56 і 1,234.56 обидва парсяться правильно, і незрозуміло, з якої вони країни. Якщо присутній лише один, він є роздільником тисяч, коли після нього рівно три цифри, і десятковою крапкою в іншому випадку.
Та сама помилка, з іншим суфіксом
Потім Індонезія. Apple друкує 829,000 рупій як "Rp 829ribu", де ribu — індонезійською «тисяча». Якщо читати буквально, це 829 рупій, близько п'яти американських центів, що проти американської ціни $69.99 було б опубліковано як найдраматичніша знахідка локалізації на екрані.
Слова величин тепер обробляються. Але ця таблиця ніколи не може бути повною, бо будь-який магазин може надрукувати слово, якого ніхто з нашого боку не бачив, тому також є нижня межа: ціна, яка конвертується нижче 2% від базового ринку, утримується як ненадійна, а не публікується. Найдешевший справжній ринок, який ми вимірюємо, Туреччина, становить 5%, тому захист ловить помилки на порядок величини, не ставлячи під сумнів реальне ціноутворення.
Пов'язане
- 90% топових додатків ніколи не тестують свою іконку: що показало дослідження 1000 додатків
- Ніхто не може продати вам обсяг пошуку в App Store
- Ціни Sensor Tower у 2026 році: скільки це насправді коштує
- Potto став вірусним у TikTok. Ось що зробив App Store
Блог · Кейси · Free ASO tools · Продукти · Конфіденційність та умови · AsoTheory