Приветствуйте Sreenath! Работайте эти Ubuntu live cd
, смонтируйте диск, где Вы установили Ubuntu (работающий Gparted
, приложение помогает Вам видеть, где Ubuntu), и откройте terminal(Cntrl+Alt+T open a terminal
).Type эта команда Sudo update-grub
.If, это просит, чтобы Вы были корнем, затем тип sudo -i
и выполнили предыдущую команду. Перезагрузите свою систему, и она должна работать.
Уловка состоит в том, чтобы использовать инвариантный язык и региональные параметры для анализа точки во всех культурах.
double.Parse("3.5", System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
Обычно я использую функцию с несколькими культурами для синтаксического анализа пользовательского ввода, в основном потому, что если кто-то привык к цифровой клавиатуре и использует культуру, в которой в качестве десятичного разделителя используется запятая, этот человек будет использовать точку цифровой клавиатуры вместо запятая.
public static double GetDouble(string value, double defaultValue)
{
double result;
//Try parsing in the current culture
if (!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture, out result) &&
//Then try in US english
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out result) &&
//Then in neutral language
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out result))
{
result = defaultValue;
}
return result;
}
Однако будьте осторожны, комментарии @nikie верны. В свое оправдание я использую эту функцию в контролируемой среде, где я знаю, что культура может быть en-US, en-CA или fr-CA. Я использую эту функцию, потому что во французском языке мы используем запятую в качестве десятичного разделителя, но любой, кто когда-либо работал в сфере финансов, всегда будет использовать десятичный разделитель на цифровой клавиатуре, но это точка, а не запятая. Так что даже в культуре fr-CA мне нужно анализировать число, в котором десятичным разделителем будет точка.
Double.Parse("3,5".Replace(',', '.'), CultureInfo.InvariantCulture)
Замените запятую точкой перед синтаксическим анализом. Полезно в странах с запятой в качестве десятичного разделителя. Подумайте об ограничении ввода пользователем (при необходимости) одной запятой или точкой.
Следующий код выполняет работу в любом сценарии. Это немного разбор.
List<string> inputs = new List<string>()
{
"1.234.567,89",
"1 234 567,89",
"1 234 567.89",
"1,234,567.89",
"123456789",
"1234567,89",
"1234567.89",
};
string output;
foreach (string input in inputs)
{
// Unify string (no spaces, only .)
output = input.Trim().Replace(" ", "").Replace(",", ".");
// Split it on points
string[] split = output.Split('.');
if (split.Count() > 1)
{
// Take all parts except last
output = string.Join("", split.Take(split.Count()-1).ToArray());
// Combine token parts with last part
output = string.Format("{0}.{1}", output, split.Last());
}
// Parse double invariant
double d = double.Parse(output, CultureInfo.InvariantCulture);
Console.WriteLine(d);
}