我有以下代码:
decimal xtop = 2.0m, xbot = -2.0m, ytop = 2.0m, ybot = -2.0m, checkx, checky;
string inputx, inputy;
while (true)
{
Console.WriteLine("Input number x:");
inputx = Console.ReadLine();
if (decimal.TryParse(inputx, out xtop))
{
checkx = decimal.Parse(inputx);
Console.WriteLine("Input number y:");
inputy = Console.ReadLine();
if (decimal.TryParse(inputy, out xtop))
{
checky = decimal.Parse(inputy);
checky = 0.5m;
if (checkx >= xbot && checkx <= xtop && checky >= ybot && checky <= ytop)
{
Console.WriteLine("The input is inside the rectangle");
}
else
{
Console.WriteLine("The input is outside the rectangle");
}
break;
}
}
}
如果来自控制台的输入是:x = 1且y = 0,5,我会收到以下错误。 如您所见,这两个数字都在打印真实值所需的限制范围内。但是,无论如何,我得到了错误的价值。如果值也是双倍,则会发生这种情况。有人可以解释为什么会发生这种情况吗?
答案 0 :(得分:0)
我不知道你是否使用逗号来表示我使用小数点,但不应该使用逗号 设置为0.5而不是0.5? 在我的编译器上,如果我设置checky = 0.5,程序就会打印出来 输入在圆圈中。 这是合理的,除了它是在广场内的测试。
答案 1 :(得分:0)
当您将xtop
用作out
TryParse
参数时,您将重新分配out
的值。第二次将其作为0.5
参数设置为checkx <= xtop
,因此if (decimal.TryParse(inputy, out xtop))
变为false。
out
当您使用{{1}}时,表示您将分配该值。
答案 2 :(得分:0)
解析数字时应用正确的文化:
var myCulture = new CultureInfo("de-DE"); // Adapt to your culture;
if (Decimal.TryParse(inputx, NumberStyles.Float, myCulture, out checkx)) {
...
}
你也在解析四次。检查你的逻辑!