![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Cybernetic10 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Была задача: перевести строку типа (String)"0.123456" в Double.
Появилась ошибка: неправильный формат. Я не сразу сообразил, что все дело в точке, как оказалось, шарп принимает в качестве разделителя в Double запятую. Пробовал применить метод Replace(char, char). Строка остается без изменений. Ну правильно, тип String константный. Чтобы обойти эту проблему, писал:
Собсно, вопрос. Зачем в константном типе есть методы-преобразователи? Или я что-то неправильно делаю, и можно обойти проблему более простым способом, не создавая новый объект? И можно ли решить данную проблему как-нить по другому, опять же эффектнее и эффективнее? ![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
чтобы поменять строку, не создавая новый объект, нужно использовать StringBuilder, так что в этом плане всё правильно...
что касается самого решения проблемы - можно вызвать double.TryParse и одним из параметров указать культуру для строки "0.123456" -------------------- СУВ, Partizan. |
|||
|
||||
diadiavova |
|
||||||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Маленькое уточнение: для числовых форматов лучше использовать не культуру, а System.Globalization.NumberFormatInfo
Что он принимает по-умолчанию зависит от настройки системы. В аглецкай винде как раз всё наоборот.
Метод реплэйс не меняет саму строку, он возвращает новую со всеми изменениями. То есть надо писать не так
а к примеру так
или так
Это сообщение отредактировал(а) diadiavova - 11.8.2009, 13:36 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||||||
|
|||||||||||
Cybernetic10 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Я в итоге так сделал, спасибо ![]()
Получается, что программа будет зависеть от настроек системы? А как добиться универсальности? Я пытался использовать этот типа в перегруженном методе Double.Parse, для обработки точки в качестве разделителя AllowDecimalPoint(правильно?), но ошибка о неправильном формате все равно присутствует. Что делаю не так? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Cybernetic10 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Все, разобрался с культурами. Просто раньше не работал с ними =)
А вот как использовать System.Globalization.NumberFormatInfo и NumberDecimalSeparator я не понял :( Поможете? ![]() Это сообщение отредактировал(а) Cybernetic10 - 11.8.2009, 15:52 |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Можно и так
Это сообщение отредактировал(а) diadiavova - 11.8.2009, 15:55 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |