среда, января 17, 2007

Судный день или "Проблема с цифрой 7"

Те кто заходит на RSDN уже видели это. Человек пишет в форум RSDN, цитирую:
"Добрый день всем.
Проблема с цифрой — 7.
При выполнении следующего кода,
результат работы будет — 75.


public static void Main(string[] args)
{
Console.WriteLine(int.Parse("775"));
}


То есть во всех преобразованиях из string в int теряется
первая цифра 7.

При выполнении, например, операций
Convert.Int32("75"), возвращает 5.

При следующем коде :

public static void Main(string[] args)
{
Console.WriteLine(int.Parse("7"));
}


В ouptup window летит сообщение:
A first chance exception
of type 'System.FormatException' occurred in mscorlib.dll
Если обложить
операцию try ... catch то ловится FormatException.

Framework
переставлял.

Пробовал и на Framework 1.1 и на FrameWork 2.0.

Помогите пожалуйста"

Мистика какая то :)
Оказывается человеку кто то выставил на машине в региональных настройках для знака минус символ '7'.
Я просто плакал весь.

2 комментария:

Анонимный комментирует...

У меня случилась таже проблема, только не понял как на машине в региональных настройках для знака минус появился символ '7'.

Анонимный комментирует...

Такой "баг" сущестовал в библиотеке VB6 (еще до дотнета). У чувака для разделителей разрядов и для разделителя тысяч был один и тот же символ (ну тысяча рублей форматировалась как 1.000.00). И летело непонятное исключение в самой runtime библиотеке VB