For example I have many numbers like
111.222, I want to decrease them to 0.1 (to get
111.122), how to do that? I tried:
But as a result I have
In short, you need to convert the string to a Float explicitly, using
To explain what you're seeing without the explicit conversion, vim has two numeric types: Number (for integers) and Float (for floating point numbers.) When using a string in numeric context (for example, with an arithmetic operation such as
-), vim will do an implicit conversion, but it only converts strings to Number, not Float. Trailing characters are ignored in the conversion, so it just stops at
., the decimal point.
The end result is that
111.222 will be converted to the Number 111.
Then, when performing an arithmetic operation between a Number and a Float, vim will first coerce the Number into a Float. So, in your case, it will get to
111.0-0.1, finally yielding