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() и перебить.