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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Convert.ToString(Single, ...): необходимо в качест, ве разделителя указать точку... 
:(
    Опции темы
CyraxZ
Дата 19.9.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Метод Convert.ToString(Single, ...) преобразует вещественное число в строку, при этом в качестве разделителя целой и дробной частей берёт тот, который указан в языковых настройках ОС (метод с одним параметром). Мне же нужно указать методу, что разделителем должна быть точка не зависимо от настроек ОС. Что мне передать вторым параметром ?
PM MAIL   Вверх
mihryak
Дата 19.9.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот так сработает
Код

using System.Globalization;

Convert.ToString(value, NumberFormatInfo.InvariantInfo);


но для надёжности не мешало бы написать класс, нужным образом реализующий интерфейс IFormatProvider, и передать его.

пс. /*краснея*/ но в данном случае я бы не стал возиться, а написал бы статическую обёртку над Convert.ToString(single), заменяя в возращаемом значении запятые (if any) на точки
PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mihryak, 
Цитата

написал бы статическую обёртку над Convert.ToString(single), заменяя в возращаемом значении запятые (if any) на точки 

(сгорая от стыда), только так всегда и делаю, а вообще есть рабочий код:
Код

            public double SummaValue
            {
                get 
                {
                    NumberFormatInfo SumFormat = new NumberFormatInfo();
                    SumFormat.NumberDecimalSeparator = ".";
                    SumFormat.NumberGroupSeparator = "";
                    return Convert.ToDouble(Summa, SumFormat);
                }
                set 
                {
                    NumberFormatInfo SumFormat = new NumberFormatInfo();
                    SumFormat.NumberDecimalSeparator = ".";
                    SumFormat.NumberGroupSeparator = "";
                    Summa = value.ToString("F2", SumFormat);
                }
            }



--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
mihryak
Дата 20.9.2007, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Experimenter @  20.9.2007,  08:55 Найти цитируемый пост)
NumberFormatInfo SumFormat = new NumberFormatInfo();

хехе, прикольно smile почему-то в голову не пришло, что можно вот так просто создать готовый числовой форматтер и настроить его под свои нужды  smile 

с таким раскладом, совесть согласилась бы на что-то подобное:
Код

private static IFormatProvider dottedNumberFormat;

private static IFormatProvider DottedNumberFormat
{
    if (dottedNumberFormat == null)
    {
        dottedNumberFormat = new NumberFormatInfo();
        dottedNumberFormat.NumberDecimalSeparator = ".";
        dottedNumberFormat.NumberGroupSeparator = String.Empty;
    }

    return dottedNumberFormat;
}

Код

Convert.ToString(value, DottedNumberFormat);

PM MAIL ICQ   Вверх
Experimenter
Дата 20.9.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mihryak, все верно, и изобрести тут больше ничего невозможно.



--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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