У меня есть простой метод утилиты, который принимает десятичное значение дюйма и возвращает дробь (т.е. превращает 1,5 в 1 1/2 ") для отображения. Это работает просто отлично, но Resharper говорит мне, что каждый случай в моем переключателе «Эвристически недоступен» и выдает предупреждение, я не могу понять, почему. Вот метод:
static string FractionalInches(double decimalInches)
{
//Set initial variables
string fraction = "";
//Round to an integer for full inches
int test = (int)Math.Round(decimalInches, 0);
if (Math.Abs(decimalInches-test) < SharedData.FloatPointTolerance) //Even inches, no fractions here
{ return test.ToString(); }
//Has a fraction
var fullInches = decimalInches - test < 0 ? test - 1 : test;
//get the fraction - rounded to 16ths.
double sixteenths = Math.Abs(decimalInches - test) * 16;
int sixt = (int)Math.Round(sixteenths, 0);
switch (sixt)
{
case 1:
fraction = "1/16";
break;
case 2:
fraction = "1/8";
break;
case 3:
fraction = "3/16";
break;
case 4:
fraction = "1/4";
break;
case 5:
fraction = "5/16";
break;
case 6:
fraction = "3/8";
break;
case 7:
fraction = "7/16";
break;
case 8:
fraction = "1/2";
break;
case 9:
fraction = "9/16";
break;
case 10:
fraction = "5/8";
break;
case 11:
fraction = "11/16";
break;
case 12:
fraction = "3/4";
break;
case 13:
fraction = "13/16";
break;
case 14:
fraction = "7/8";
break;
case 15:
fraction = "15/16";
break;
case 16:
fraction = "";
fullInches += 1;
break;
}
//construct and return the final string
return fraction == "" ? fullInches.ToString() : fullInches + " " + fraction;
}
Это дает мне недостижимое предупреждение в каждом случае в операторе switch, но я его знаю получает удар, потому что я могу отправить десятичные значения, и они возвращают правильные дроби ... Кто-нибудь знает, почему R # выдает это предупреждение? Я могу достаточно просто проигнорировать его, но не понимаю, зачем оно вообще.