Десятичный разделитель и интернационализация

Сегодня я наткнулся на совет Йоста Хелберга в Mastodon:
🚨 TIL: Не используй три цифры после запятой в отчётах! Люди могут спутать десятичный разделитель с разделителем тысяч. Лучше указывать 2 или 4 знака — даже если это неточно, это предотвратит ошибки в 1000 раз! 💡

Я обычно указываю четыре знака, но не задумывался о проблеме разделителей.
В разработке ПО 🔧 всегда используй библиотеки для форматирования чисел по локальным стандартам. Игнорирование этого может привести к катастрофе. Пример? История моего позора в Бордо!

Стыд в Бордо 🇫🇷
В 2006 году мы с Питером Толлом проводили курс по байесовскому дизайну клинических испытаний. Часть программы — демонстрация софта, который моя команда создала в MD Anderson.

Через пару минут после начала презентации я понял: у аудитории софт не работает! 😱
Причина? США и Франция используют противоположные разделители:

  • США: `3.14` (десятичная точка)

  • Франция: `3,14` (десятичная запятая)

Я извинился и попросил вводить числа в американском формате. Не помогло! 💥
Оказалось, мы использовали Windows API для парсинга (он учитывает локальные настройки), но написали кастомную валидацию, которая разрешала только цифры и точки. Ой! 🙈

Участники оказались в ловушке:

  • Валидация отвергала `3,14` (французский формат)

  • Парсер не принимал `3.14` (американский формат)

Решение? Сменить локаль ОС на США. 😅
Аудитория отнеслась с пониманием — сказали, что это частая проблема. Так я начал курс с унижения, но дальше всё прошло отлично.

📌 Вывод: Никогда не изобретайте велосипеды для работы с числами! Доверьте это проверенным библиотекам.

Источник

Оставьте комментарий