Właśnie odkryłem, że vim oczywiście pozwala na dzielenie przez zero:
:let a=42/0
:echo a
drukuje 2147483647
(co jest wartością a
).
Czy jest to gdzieś udokumentowane i dlaczego vim pozwala na dzielenie przez zero?
vimscript
arithmetic
René Nyffenegger
źródło
źródło
:echo 42/0.0
zobaczyć inny wynik :)Odpowiedzi:
To zachowanie jest udokumentowane w części eval :
źródło
Oto dlaczego:
A w jaki sposób Vim reprezentuje największą dostępną liczbę?
Widzieć
:h limits
Ponadto
float2nr
dokumentacja funkcji stanowi:Więc masz tutaj swoje 2 liczby:
+ 2147483647
i- 2147483647
.Ostatni numer
-2147483648
służy do przedstawieniaNaN
wartości.Potwierdza to
eval
sekcja na nim (mea culpa: @cuonglm opublikowała go tuż przed mną):Jak stwierdził @VanLaser, działa to tylko dla liczb całkowitych, dla liczb zmiennoprzecinkowych masz większą spójność:
źródło
To zachowanie jest przydatne w rachunku różniczkowym, gdy używa się czegoś zwanego Limitem.
Lim n -> 0 ^ + z 1 / n = + inf
Można to również zapisać jako: As n -> 0 ^ +, 1 / n -> + inf
Czyta się tak. Gdy n zbliża się do zera z prawej, funkcja 1 / n zbliża się do dodatniej nieskończoności.
Aby zobaczyć wizualne wyjaśnienie tego rozumowania, przejdź do strony http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn
Jeśli chodzi o skrypt Vim, AFAIK niewiele osób robi z nim więcej niż logikę i arytmetykę liczb całkowitych. Może się zdarzyć, że takie zachowanie wydawało się w tamtym czasie dobrym pomysłem i jest w tym momencie jedynie artefaktem spuścizny.
źródło