На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Double to string , как правильно перевести
    Вопрос вообщем то касается и wm и winforms.

    Решила написать одну програмку под Windows Mobile 6, но сталкнулася с проблемой.
    В программе нужно перевести double в String.

    к примеру даже если сделать так:

    на форме у нас 3 лэйблы:
    label1.text="1,23";
    label2.text="1,34";
    label3.text="0"
    и кнопочка button1.

    ExpandedWrap disabled
      private void button1_Click(object sender, EventArgs e)
              {
                  double Peremenaia = Convert.ToDouble(label1.Text) + Convert.ToDouble(label2.Text);
                  label3.Text = Convert.ToString(Peremenaia);
              }


    Результат нажатия кнопки button1:
    user posted image

    Результат сложения 1,23 + 1,34 = 257. запятая теряется.

    Хотя делаю тоже самое создав WinForms проект:

    ExpandedWrap disabled
      private void button1_Click(object sender, EventArgs e)
              {
                 double Peremenaia = Convert.ToDouble(label1.Text) + Convert.ToDouble(label2.Text);
                 label3.Text = Convert.ToString(Peremenaia);
       
                
              }

    Результат нажатия кнопки button1:
    user posted image

    Результат сложения 1,23 + 1,34 = 2,57. запятая не теряется.

    подскажите как можно решить эту проблему в wm6.
    Идея только приходит написать процедуру которая бы считала целую часть и дробную отдельно и потом склеивала, может кто знает решение получше?
      Видимо, в WM6 у вас стоит нерусская локаль, считающая, что разделитель дробной части - точка.
        попробуй так:
        ExpandedWrap disabled
          private void button1_Click(object sender, EventArgs e)
                  {
                      System.Globalization.NumberFormatInfo info = new System.Globalization.NumberFormatInfo();
                      info.NumberDecimalSeparator = ",";
           
                      double Peremenaia = Convert.ToDouble(label1.Text.Replace('.', ','), info) + Convert.ToDouble(label2.Text.Replace('.', ','), info);
                      label3.Text = Convert.ToString(Peremenaia);
                  }
          ExpandedWrap disabled
                        System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CurrentCulture;
                        string delimeter = culture.NumberFormat.NumberDecimalSeparator;
             
                        label1.Text = label1.Text.Replace(",", delimeter).Replace(".", delimeter);

          Тупо, но работает.
            Спасибо Большое! :)
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0257 ]   [ 15 queries used ]   [ Generated: 10.07.25, 18:04 GMT ]