В C# windows form преобразование типа string в double и наоборот

179
21 апреля 2019, 20:40

Как сделать что бы из textbox значения перевести в тип double и что бы читалась в числе и точка и запятая?И как вывести в label тип double?

И нужно в расчетах (обычных математических формулах) сделать, чтобы ответы округлялись до 0.00 и 0.000?

Я начинаю программировать и поэтому такие вопросы.

Answer 1

параметр checkBox.text принимаеn строку. А значит нужно перевести ваше значение с типом double в строку. Для этого используйте на вашей переменной метод ToString();

double doubleValue = 0.2;
string someStringValue = "";
someStringValue  = doubleValue.ToString();

Что бы перевести из строки в doublе или другой тип вам нужно использовать

double.Parse(string value);

К примеру:

string someStringValue = "0.2";
double someDoubleValue = double.Parse(someStringValue);

Подобным образом можно парсить и другие типы. К примеру:

int integerValue = int.Parse(someValue);
float floatValue = float.Parse(someValue);

Но может возникнуть проблема и ваша программа упадет на этапе выполнения если входные данные будет невозможно конвертировать. За этим нужно следить. Как вариант можно использовать к примеру

double doubleValue;
double.TryParse("some string", out doubleValue);

в этом случае если входная строка имела верный формат этот метод вернет вам тру и поместит в значение doubleValue данные. Если же нет, то метод вернет вам фолс И вот вам сразу ссылка на округление. там вы сможете детальнее его разобрать https://aakinshin.net/ru/posts/cheatsheet-rounding/

что бы вывести что то в lable можете использовать

someLable.Text = "необходимые данные";

Если все же будет падать при конвертировании со строки в double то как вариант можно подключить

using System.Globalization;

и передать

double.Parse("2.2",new NumberFormatInfo())
Answer 2
  1. Получаем значение введенное в TextBox через свойство text, переводим в double и если введена точка, мы ее заменяем на запятую методом Replace.

double double1 = double.Parse(textBox1.Text.Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture);

  1. В lable выводим так же через свойство Text. Что бы число перевести в строку, используем метод ToString.

label1.Text = double1.ToString();

  1. Что бы округлить до нужного количества знаков, используем перегрузки метода ToString. Надо два знака после запятой, пишите double1.ToString("#.##"), если три double1.ToString("#.###")

label1.Text = double1.ToString("#.###");

Answer 3
        //Из string в double (num - количество знаков после запятой)
        private double? ToDouble(string str,int num = 2)
        {
            string[] mass = str.Split(new Char[] { ',','.' });
            if (mass.Length > 2) return null;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            double result;
            Double.TryParse($"{mass[0]}.{mass[1]}", out result);
            result = Math.Round(result, num,MidpointRounding.AwayFromZero);
            return result;
        }
READ ALSO
Почему не получается десериализовать Json?

Почему не получается десериализовать Json?

Зашел в тупик с десериализацией Json, подскажите, почему?

143
BlockingCollection TryTake C#

BlockingCollection TryTake C#

Делаю так:

166
Проблема при изменении иерархии

Проблема при изменении иерархии

Есть такая иерархия классов: Window->baseMaker->someMaker

115
Скомпилированное приложение winforms не видит БД

Скомпилированное приложение winforms не видит БД

У меня есть приложение, которое отображает таблицы из БДБаза данных находится в папке с проектом, соответственно, строка подключения выглядит...

205