Проблема конвертации String в Double - культурологическая: разделителем
целой и дробной части у нас является запятая, а в англоязычных странах -
точка. Поэтому, если напрямую применить Parse, получим "наше"
представление (например: 5,15 для введенной строки "5.15"). Для С++ это
два числа: 5 и 15.
Что делать? Менять культуру.
using namespace System; using namespace System::Globalization; using namespace System::Threading; int main() { Thread::CurrentThread->CurrentCulture = gcnew CultureInfo("en-US",false ); NumberFormatInfo^ nfi = CultureInfo::CurrentCulture->NumberFormat; Console::Write("Num = "); double num = Double::Parse(Console::ReadLine(),nfi); ........ return 0; }
Теперь Parse введенную с консоли строку "5.15" преобразует в 5.15, что и требовалось.
|