Je viens de découvrir que vim permet évidemment la division par zéro:
:let a=42/0
:echo a
imprime 2147483647
(qui est la valeur de a
).
Est-ce documenté quelque part et pourquoi vim permet-il la division par zéro?
vimscript
arithmetic
René Nyffenegger
la source
la source
:echo 42/0.0
de voir un autre résultat :)Réponses:
Ce comportement est documenté dans la section eval :
la source
Voici pourquoi:
Et comment Vim représente le plus grand nombre disponible?
Voir
:h limits
De plus, la
float2nr
documentation de la fonction indique:Vous avez donc ici vos 2 numéros:
+ 2147483647
et- 2147483647
.Le dernier nombre
-2147483648
est utilisé pour représenter laNaN
valeur.Ceci est confirmé par la
eval
section à ce sujet (mea culpa: @cuonglm l'a posté juste avant moi):Comme l'a indiqué @VanLaser, cela ne fonctionne que pour les nombres entiers, pour le nombre à virgule flottante, vous avez plus de cohérence:
la source
Ce comportement est utile dans le calcul lorsque vous utilisez quelque chose appelé une limite.
Lim n -> 0 ^ + de 1 / n = + inf
Cela peut aussi s'écrire: As n -> 0 ^ +, 1 / n -> + inf
Elle se lit ainsi. Comme n s'approche de zéro par la droite, la fonction 1 / n s'approche de l'infini positif.
Pour voir une explication visuelle de ce raisonnement, passez à http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn
En ce qui concerne le script Vim en particulier, AFAIK peu de gens en font beaucoup plus que la logique et l'arithmétique entière. Il pourrait être le cas que ce comportement semblait être une bonne idée à l'époque, et n'est simplement qu'un artefact hérité à ce stade.
la source