c#将double转换为字符串并检查一个表达式中的长度

时间:2014-09-15 21:01:44

标签: c# tostring

有没有办法用一个表达式替换第二行和第三行?

double oddOrEven = 1231713.0;

string myString = oddOrEven.ToString();

if (myString[myString.Length - 3] == '7')
    Console.WriteLine("The third digit is a 7");

我没有创建一个新的字符串变量并使用它来检查IF,而是想做这样的事情:

double oddOrEven = 1231713.0;

if (oddOrEven[oddOrEven.Length - 3].ToString() == '7')
    Console.WriteLine("The third digit is a 7");

我意识到它不会工作,但有没有办法安排它,所以我可以获得我想要的相同效果,而无需创建和使用新变量? 也许我不应该使用ToString? 谢谢!

3 个答案:

答案 0 :(得分:2)

如果您不想使用字符串,可以这样做:

if (Math.Truncate((oddOrEven / 100)) % 10 == 7)
Console.WriteLine("The third digit is a 7");

答案 1 :(得分:1)

这应该有效

if (oddOrEven.ToString()[oddOrEven.ToString().Length - 3] == '7')
    Console.WriteLine("The third digit is a 7");

然而,它可能效率不高,因为ToString()被调用两次。 此外,代码变得不那么容易阅读,但只要它有效,并且你知道后果,这取决于你:)

答案 2 :(得分:1)

Linq版

   if (oddOrEven.ToString().Reverse().ToArray()[2] == '7')
            Console.WriteLine("The third digit is a 7");