Abd*_*eem 4 c# double visual-studio
在 C# 中,visual studio 在读取后不以 double 取小数点并使用转换为 double
Convert.ToDouble(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud)
命令...例如,如果12.25键入它会将值保存为1225. 我能得到任何帮助吗?这是我正在使用的代码。
double number;
Console.WriteLine("Enter a number with a two decimal places!");
number = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(number):
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
您当前的代码应该按预期工作,如果不是,则可能是文化问题的结果,希望您的双字符串采用不同的格式(即 12,25而不是12.25)。
解析时应用当前文化
在Convert.ToDouble()通过System.Globalization命名空间解析方法中的值时,您可以通过应用当前区域性来处理此问题:
// This would use the current culture to handle reading your value
double input = Convert.ToDouble(Console.ReadLine(),CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
处理各种文化(即句号或逗号)
如果您希望处理句点或逗号,您可以以相同的方式执行替换:
// Get the number separator for this culture and replace any others with it
var separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
// Replace any periods or commas with the current culture separator and parse
var input = Double.Parse(Regex.Replace(Console.ReadLine(),"[.,]",separator));
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到一个工作示例。
当您的本地文化不用.作十进制分隔符时,它将不起作用。如果要输入带.小数分隔符的双精度数,则需要指定使用它的区域性。
Convert.ToDouble(yourString, System.Globalization.CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
如果要以相同的格式输出,请CultureInfo再次使用相同的格式:
CultureInfo culture = CultureInfo.InvariantCulture;
double input = Convert.ToDouble(Console.ReadLine(), culture);
Console.WriteLine(String.Format(culture, "{0}", input));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5486 次 |
| 最近记录: |