in edge-util/src/es6numberserializer/NumberFastDToA.cs [190:318]
private static long BiggestPowerTen(int number, int number_bits)
{
int power, exponent;
switch (number_bits)
{
case 32:
case 31:
case 30:
if (kTen9 <= number)
{
power = kTen9;
exponent = 9;
break;
}
// else fallthrough
goto case 29;
case 29:
case 28:
case 27:
if (kTen8 <= number)
{
power = kTen8;
exponent = 8;
break;
}
// else fallthrough
goto case 26;
case 26:
case 25:
case 24:
if (kTen7 <= number)
{
power = kTen7;
exponent = 7;
break;
}
// else fallthrough
goto case 23;
case 23:
case 22:
case 21:
case 20:
if (kTen6 <= number)
{
power = kTen6;
exponent = 6;
break;
}
// else fallthrough
goto case 19;
case 19:
case 18:
case 17:
if (kTen5 <= number)
{
power = kTen5;
exponent = 5;
break;
}
// else fallthrough
goto case 16;
case 16:
case 15:
case 14:
if (kTen4 <= number)
{
power = kTen4;
exponent = 4;
break;
} // else fallthrough
goto case 13;
case 13:
case 12:
case 11:
case 10:
if (1000 <= number)
{
power = 1000;
exponent = 3;
break;
}
// else fallthrough
goto case 9;
case 9:
case 8:
case 7:
if (100 <= number)
{
power = 100;
exponent = 2;
break;
}
// else fallthrough
goto case 6;
case 6:
case 5:
case 4:
if (10 <= number)
{
power = 10;
exponent = 1;
break;
}
// else fallthrough
goto case 3;
case 3:
case 2:
case 1:
if (1 <= number)
{
power = 1;
exponent = 0;
break;
}
// else fallthrough
goto case 0;
case 0:
power = 0;
exponent = -1;
break;
default:
// Following assignments are here to silence compiler warnings.
power = 0;
exponent = 0;
break;
// UNREACHABLE();
}
return ((long)power << 32) | (0xffffffffL & exponent);
}