Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> конвертация string to float 
V
    Опции темы
X-3R1
Дата 19.10.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 28.4.2007

Репутация: нет
Всего: 2



Каким образом сконвертировать строку, представляющую число с одинарной точности во float. Проблема связана с локализацией:
Код

string str = "0.2" // падаем ("en-US" CultureInfo). Если "0,2" ("ru-RU") всё ок.
float value = Convert.ToSingle(str);

PM MAIL   Вверх
STRELOKBMSTU
Дата 19.10.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 11.8.2007
Где: Russia.MR.Moscow( );

Репутация: нет
Всего: нет



Тут дело не в типе, а в методе представления строки. Можешь сделать к примеру так:

Код

string s = "0.2";
s.Replace(".", ",");


Это сообщение отредактировал(а) STRELOKBMSTU - 19.10.2009, 13:54
PM MAIL ICQ Skype   Вверх
X-3R1
Дата 19.10.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 28.4.2007

Репутация: нет
Всего: 2



Цитата(STRELOKBMSTU @ 19.10.2009,  11:52)
Тут дело не в типе, а в методе представления строки. Можешь сделать к примеру так:

Код

string s = "0.2";
s.Replace(".", ",");

Это связано с локализацией винды. В русской локализации в настройках системы разделитель дробной части -- ",". В американской локализации -- это ".".

Таким образом, если заменить "." на ",", то этот код запустится в рускоязычной винде, а в англоязычной не запустится.

Пытался поиграться с CultureInfo, но безуспешно.

З.Ы. нашёл решение:

Код

string s = "0.2";
CultureInfo ci = CultureInfo.InstalledUICulture;
NumberFormatInfo ni = (NumberFormatInfo) ci.NumberFormat.Clone();
ni.CurrencyDecimalSeparator = ".";

float f = Convert.ToSingle(sv, ni);


Это сообщение отредактировал(а) X-3R1 - 19.10.2009, 14:05
PM MAIL   Вверх
IGV
Дата 19.10.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 1.4.2008

Репутация: 1
Всего: 2



можно воспользоваться своим мозгом и перегнать строку в число написав алгоритм. А вообще в реестре есть запись, которая говорит о том какой символ является разделителем в системе. Попробуй погуглить на эту тему.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.