Você provavelmente sabe que os diferentes níveis de reputação no Stack Exchange são formatados de maneira diferente quando vistos na página de perguntas / uma postagem. Existem todas as regras de formatação de representantes:
- se um usuário tiver de 1 a 999 (um a três dígitos) representante, ele fica como está.
- se um usuário tiver de 1000 a 9999 repetições (quatro dígitos), ele receberá a vírgula como um separador:
9,999
se um usuário tiver 10000 a 99999 repetições (cinco dígitos), ele será reduzido e arredondado. Ou seja, 16741 rep é formatado como
16.7k
, observe o separador de pontos ao contrário da vírgula do representante inferior (ponto anterior).Já resultará 16750
16.8k
(já que isso parece estar corrigido )16941 resulta em
16.9k
, 16950 arredonda para cima17k
, assim como 17014, por exemplo.99941 arredonda para
99.9k
, 99950 arredonda para100k
(isso é algo que eu realmente odeio com o rep-arredondamento no SE, porque 100.000 é um marco e 99950 não está nem perto).
Se um usuário tiver 100000 a 999999 representantes, será arredondado da seguinte maneira:
100100 arredonda para baixo
100k
, 100500 arredonda para cima101k
. O problema é que o arredondamento é feito, mas a parte decimal é removida (ao contrário do representante de quatro dígitos).100450 arredonda para baixo
100k
, nenhum passo para arredondar 450 a 500. Nem 100499 - ainda é100k
.279843 arredonda para cima
280k
e 399999 arredonda para400k
.
Como entrada, você recebe a reputação bruta e a produz como formatada.
Você pode considerar essa entrada não receberá números / não números inválidos ou números com zeros à esquerda, ou seja 0001234
.
Como Jon Skeet não parece chegar a 1.000.000 em breve, seu código deve ser o mais curto possível , não sendo necessário lidar com o representante maior que um milhão (ou seja, sem casos especiais para 999500 e acima).
.
um ponto decimal e com um sufixo k
; sujeito à ressalva de que, se o terceiro número significativo estiver 0
e estiver à direita do ponto decimal, o valor será exibido apenas em 2 números significativos. "Os pontos de corte específicos podem ser movidos para uma única lista de testes casos no final da postagem, o que é mais conveniente para copiar e colar em uma estrutura de teste.