Я только что обнаружил, что vim, очевидно, допускает деление на ноль:
:let a=42/0
:echo a
печатает 2147483647
(что является значением a
).
Это где-то задокументировано и почему vim допускает деление на ноль?
vimscript
arithmetic
Рене Ниффенеггер
источник
источник
:echo 42/0.0
увидеть другой результат :)Ответы:
Это поведение описано в разделе eval :
источник
Вот почему:
И как Vim представляет наибольшее число доступных?
Видеть
:h limits
Кроме того, в
float2nr
документации по функциям говорится:Итак, у вас есть 2 номера:
+ 2147483647
а- 2147483647
.Последнее число
-2147483648
используется для представленияNaN
значения.Это подтверждается в
eval
разделе об этом (mea culpa: @cuonglm разместил его прямо передо мной):Как сказал @VanLaser, это работает только для целых чисел, для числа с плавающей запятой у вас больше согласованности:
источник
Это поведение полезно в исчислении, когда используется то, что называется пределом.
Lim n -> 0 ^ + из 1 / n = + inf
Это также можно записать так: как n -> 0 ^ +, 1 / n -> + inf
Читается так ... Когда n приближается к нулю справа, функция 1 / n приближается к положительной бесконечности.
Чтобы увидеть наглядное объяснение этого рассуждения, перейдите на http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn
Что касается Vim-скрипта, AFAIK не так много людей делает с ним гораздо больше, чем логика и целочисленная арифметика. Вполне возможно, что такое поведение в то время казалось хорошей идеей и на данный момент является просто устаревшим артефактом.
источник