Acabei de descobrir que o vim obviamente permite a divisão por zero:
:let a=42/0
:echo a
imprime 2147483647
(que é o valor de a
).
Isso está documentado em algum lugar e por que o vim permite a divisão por zero?
vimscript
arithmetic
René Nyffenegger
fonte
fonte
:echo 42/0.0
ver outro resultado :)Respostas:
Esse comportamento está documentado na seção eval :
fonte
Aqui está o porquê:
E como o Vim representa o maior número disponível?
Vejo
:h limits
Além disso, a
float2nr
documentação da função declara:Então você tem aqui seus 2 números:
+ 2147483647
e- 2147483647
.O último número
-2147483648
é usado para representar oNaN
valor.Isso é confirmado pela
eval
seção (mea culpa: @cuonglm postou antes de mim):Como o @VanLaser afirmou, isso funciona apenas para números inteiros. Para o número de ponto flutuante, você tem mais consistência:
fonte
Esse comportamento é útil no cálculo ao usar algo chamado limite.
Lim n -> 0 ^ + de 1 / n = + inf
Também pode ser escrito como: Como n -> 0 ^ +, 1 / n -> + inf
É lida assim. Como n se aproxima de zero da direita, a função 1 / n se aproxima do infinito positivo.
Para ver uma explicação visual desse raciocínio, vá para http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn
Quanto ao script Vim, especificamente, o AFAIK poucas pessoas fazem muito mais do que lógica e aritmética de números inteiros com ele. Pode ser que esse comportamento pareça uma boa ideia na época e seja apenas um artefato legado neste momento.
fonte