在C#visual studio中,读取后不取小数点后使用
转换为doubleConvert.ToDouble(Console.ReadLine());
命令...例如,如果键入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();
答案 0 :(得分:4)
当您的本地文化没有使用.
作为小数分隔符时,它将无法正常工作。
如果要输入带有.
小数分隔符的双精度数,则需要指定一个使用它的文化。
Convert.ToDouble(yourString, System.Globalization.CultureInfo.InvariantCulture)
如果您想以相同的格式输出,请再次使用相同的CultureInfo
:
CultureInfo culture = CultureInfo.InvariantCulture;
double input = Convert.ToDouble(Console.ReadLine(), culture);
Console.WriteLine(String.Format(culture, "{0}", input));
答案 1 :(得分:1)
您当前的代码应按预期工作,如果不是,则可能是文化问题导致您的双字符串格式不同(即12,25
而不是12.25
)。
解析时应用当前文化
您可以通过System.Globalization
命名空间在Convert.ToDouble()
方法中解析值时应用当前区域性来处理此问题:
// This would use the current culture to handle reading your value
double input = Convert.ToDouble(Console.ReadLine(),CultureInfo.InvariantCulture);
处理各种文化(即句号或逗号)
如果您希望处理句号或逗号,您可能会以相同的方式执行替换:
// 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));
答案 2 :(得分:0)
这可能是某种文化使用的全球化问题,而不是。分隔小数位。希望它能解决你的问题。
string userInput = Console.ReadLine();
double inputInDouble = Convert.ToDouble(userInput,System.Globalization.CultureInfo.InvariantCulture);