我是C#编程的新手,我不确定我做错了什么,因为我无法总结Double的数字。如果我输入2,5和2,5我得到5,但是如果我输入2.5和2.5,当我在数字之间使用点而不是逗号时我得到零。为什么这样?
我添加了一些代码:
private void ReadInputAndSumNumbers()
{
while (!done)
{
Console.Write("Number: ");
if (double.TryParse(Console.ReadLine(), out num))
{
if (num == 0)
{
done = true;
}
else
{
sum += num;
}
}
}
}
我的设置是使用逗号,但我希望用户能够输入带点的值
答案 0 :(得分:4)
您如何将ReadLine输入转换为双打?大多数转换操作都是特定于语言环境的,因此如果您的Windows设置具有,
作为小数分隔符,则会遵循此设置。
示例:强>
string enteredByUser = Console.ReadLine();
// uses user-specific Windows settings (decimal separator might be ",")
double myDouble1 = double.Parse(enteredByUser);
// uses default settings (decimal separator is always ".")
double myDouble2 = double.Parse(enteredByUser, CultureInfo.InvariantCulture);
简短注释:如果您解析用户输入,则应该查看double.TryParse
,因为这比double.Parse
或Convert.ToDouble
更强大,因为它允许您在不诉诸异常处理的情况下检测错误输入。
编辑:如果您想支持两个逗号和点,您需要先将点转换为逗号(反之亦然)。 String.Replace
可以在这里帮助你。但请注意,如果用户尝试输入千位分隔符(1.000,00
- > 1.000.00
或1,000,00
- >错误),此方法将会中断。建议的方法是
.
),如果输入来自某些机器生成的输出或文件。答案 1 :(得分:0)
用于计算双和的样本
static void Main(string[] args)
{
var retVal = 0.0;
var sum = 0.0;
while (true)
{
Console.WriteLine("Enter input:");
string line = Console.ReadLine();
if (line == "exit")
{
break;
}
double.TryParse(line, NumberStyles.Any, CultureInfo.InvariantCulture, out retVal);
sum += retVal;
Console.WriteLine(string.Format("Double Value : {0}", sum ));
}
Console.ReadKey();
}