БлогNot. Visual C++: преобразовать число в строку и строку в число с десятичной точкой вм...

Visual C++: преобразовать число в строку и строку в число с десятичной точкой вместо запятой

В принципе, ответ есть в этой заметке, на всякий случай сделаю ещё отдельную. Как известно, в C/C++ вещественные числа записываются с точкой в качестве разделителя целой и дробной части. Часто хочется, не привязываясь к установленной в системе локали, выводить и считывать их именно с точкой, а не запятой, принятой в русском языке. Проще всего в Studio сделать так:

System::Globalization::NumberFormatInfo ^ nfi = gcnew System::Globalization::NumberFormatInfo();
nfi->NumberDecimalSeparator = "."; 
double x = 1.5;
String ^Str = x.ToString(nfi);
System::Windows::Forms::MessageBox::Show(Str);

Если нужно извлечь число из TextBox с "принудительно" установленной точкой в качестве разделителя целой и дробной части числа можно использовать, например, следующий метод:

private: bool Parse (String ^s, double &a) {
 System::IFormatProvider ^ provider = System::Globalization::CultureInfo::GetCultureInfo("en-US");
 bool A = Double::TryParse(s,System::Globalization::NumberStyles::Number, provider,a);
 return A;
}

и вот так его вызывать:

double x1;
if (Parse(this->textBox1->Text,x1)==false) {
 //обработка ошибки
}

Следует помнить, что для ввода чисел согласно установленной в системе локали, в общем случае предпочтительнее компонента NumericUpDown.

27.10.2015, 13:29 [7568 просмотров]


теги: язык числа c++/cli

показать комментарии (1)