我已经阅读了包含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
}
我错过了什么?
答案 0 :(得分:1)
您正在将十进制数转换为不包含小数的Int32
。这会将NewValue
中的数字转换为2
,因为它会向零截断。您需要将变量存储在double
,float
或decimal
中,以符合您的要求为准。
请参阅以下使用double
和Parse
的示例:
double newValue = Double.Parse(secondLine);
请注意,如果您不确定该值是否为双倍,则应使用Double.TryParse
double newValue;
bool result = Double.TryParse(secondLine, out newValue);
if (!result) //Parse failed
请注意,如果解析失败,可能会归结为您的文化设置,即小数分隔符的','不是'。'。但是Parse
和TryParse
存在过载,允许您传递文化信息。
答案 1 :(得分:0)
您正在尝试将表示double的字符串解析为整数
会导致System.IFormatException
{“输入字符串不正确 格式。“} {”输入字符串的格式不正确。“}
如果您知道它是带小数部分的数字,那么请执行:
var newValue = Convert.ToDouble(secondLine);
如果你知道它是一个整数,那么试试:
var newValue = Convert.ToInt32(secondLine);