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
280ke 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 0e 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.