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 [7732 просмотра]