Acabo de descubrir que vim obviamente permite la división por cero:
:let a=42/0
:echo a
impresiones 2147483647
(que es el valor de a
).
¿Está documentado en alguna parte y por qué vim permite la división por cero?
vimscript
arithmetic
René Nyffenegger
fuente
fuente
:echo 42/0.0
ver otro resultado :)Respuestas:
Este comportamiento está documentado en la sección eval :
fuente
Aquí es por qué:
¿Y cómo representa Vim el mayor número disponible?
Ver
:h limits
Además, la
float2nr
documentación de la función establece:Entonces tienes aquí tus 2 números:
+ 2147483647
y- 2147483647
.El último número
-2147483648
se usa para representar elNaN
valor.Esto se confirma en la
eval
sección (mea culpa: @cuonglm lo publicó justo antes que yo):Como dijo @VanLaser, esto solo funciona para números enteros, para el número de coma flotante tiene más consistencia:
fuente
Este comportamiento es útil en Cálculo cuando se usa algo llamado Límite.
Lim n -> 0 ^ + de 1 / n = + inf
Esto también se puede escribir como: Como n -> 0 ^ +, 1 / n -> + inf
Se lee así. Cuando n se aproxima a cero desde la derecha, la función 1 / n se aproxima a infinito positivo.
Para ver una explicación visual de este razonamiento, vaya a http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn
En cuanto a Vim-script específicamente, AFAIK no mucha gente hace mucho más que lógica y aritmética de enteros con él. Podría ser el caso de que este comportamiento parecía una buena idea en ese momento, y es simplemente un artefacto heredado en este momento.
fuente