Как установить символ, используемый в качестве десятичной точки в C #? - PullRequest
3 голосов
/ 19 января 2011

Я делаю быструю программу на C #, и у меня проблема с символом, используемым в качестве десятичной точки.Прямо сейчас мне нужно использовать

,

, но я хочу иметь возможность использовать

.

или даже лучше, и то, и другое.

Я ищу какое-то короткое и простое решение, потому что вся программа взломана, и я сомневаюсь в этом, за исключением одного пунктаМне нужно, чтобы он выглядел лучше.

Вот один из проблемных фрагментов кода:

private void button2_Click(object sender, EventArgs e)
        {
            double Ri, B, R, T;            
            Ri = Convert.ToDouble(textBox2.Text);
            B = Convert.ToDouble(textBox3.Text);
            R = Convert.ToDouble(textBox6.Text);

            T = B / Math.Log(R*1000 / Ri, Math.Exp(1)) - 273.15;
            textBox5.Text = T.ToString();

        }

Я использую автоматически сгенерированную кнопку и просто добавляю формулу Iнадо рассчитать на это.Как видите, сейчас я использую Convert.ToDouble для конвертации.Есть ли лучшие способы сделать это?Я также хотел бы, если это возможно, избегать прохождения строки, поиска точек и запятых и исправления их вручную.

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

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Для запятой измените свою последнюю строку на:

textBox5.Text = T.ToString(CultureInfo.GetCultureInfo("de-DE").NumberFormat);

Для периода используйте это:

textBox5.Text = T.ToString(CultureInfo.InvariantCulture.NumberFormat); 
// or use any "normal" country

И сделать наоборот (разобрать исходное значение в текстовом поле), сделать это для запятой:

double d = double.Parse(textBox5.Text, CultureInfo.GetCultureInfo("de-DE").NumberFormat);

И это за период:

double d = double.Parse(textBox5.Text, CultureInfo.InvariantCulture.NumberFormat);
0 голосов
/ 10 апреля 2014
        float Ri, B, R, T;
        Ri = float.Parse((String.Format("{0:0.00}",textBox2.Text)));
        B = float.Parse((String.Format("{0:0.00}",textBox3.Text))));
        R = float.Parse((String.Format("{0:0.00}", textBox6.Text)));

        T = B / Math.Log(R * 1000 / Ri, Math.Exp(1)) - 273.15;
        textBox5.Text = String.Format("{0:0.00}",T);
...