我如何检查两个数字之间的结果?

时间:2016-11-25 16:24:45

标签: c#

我已经阅读了包含2.75的文本文件中的第二行,如果符合某些条件,我试图让它做一些事情。我确信我之前已经做过这个并且有一个简单的答案,但我看不清楚。

string SecondLine;
using (var reader = new StreamReader(SPFile2))
{
    reader.ReadLine();
    SecondLine = reader.ReadLine();
}
int NewValue;
NewValue = Convert.ToInt32(SecondLine);
if ((NewValue >= 2) && (NewValue <= 2.99))
{
    // Do Something
}
if ((NewValue >= 3) && (NewValue <= 3.99))
{
    // Do something else
}

我错过了什么?

2 个答案:

答案 0 :(得分:1)

您正在将十进制数转换为不包含小数的Int32。这会将NewValue中的数字转换为2,因为它会向零截断。您需要将变量存储在doublefloatdecimal中,以符合您的要求为准。

请参阅以下使用doubleParse的示例:

double newValue = Double.Parse(secondLine);

请注意,如果您不确定该值是否为双倍,则应使用Double.TryParse

double newValue;
bool result = Double.TryParse(secondLine, out newValue);
if (!result) //Parse failed

请注意,如果解析失败,可能会归结为您的文化设置,即小数分隔符的','不是'。'。但是ParseTryParse存在过载,允许您传递文化信息。

答案 1 :(得分:0)

您正在尝试将表示double的字符串解析为整数

会导致

  

System.IFormatException

     

{“输入字符串不正确   格式。“} {”输入字符串的格式不正确。“}

如果您知道它是带小数部分的数字,那么请执行:

var newValue = Convert.ToDouble(secondLine);

如果你知道它是一个整数,那么试试:

var newValue = Convert.ToInt32(secondLine);