| Summary: | Неправильная работа с float в русской локали | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Fr. Br. George <george> | ||||
| Component: | basic256 | Assignee: | Andrey Cherepanov <cas> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | black, cas, webmaster | ||||
| Version: | unstable | ||||||
| Hardware: | all | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Ping Мейнстрим исправил, поскольку немцы со своей локалью тоже нарвались на эту ошибку. Посмотрим исправил ли наш мантейнер... (В ответ на комментарий №2) > Мейнстрим исправил, поскольку немцы со своей локалью тоже нарвались на эту > ошибку. Посмотрим исправил ли наш мантейнер... Майнтейнер исправил. Исправлено. |
Created attachment 4569 [details] Грязный хак, перебивающий LC_NUMERIC В программе повсеместно используется как locale-=незаисимое представление float (в виде чисел с точкой), так и locale-зависимое (в русской локали это числа с запятой), в результате print 1.1 дяёт 1 Самый простой способ -- насильственно перебить локаль LC_NUMERIC (это соответствует стандарту BASIC). Пока что единственный вариант -- отловить использование локалезависимыхфункций типа atof() и перебить.