On Mon, 2 Mar 2020 18:14:41 -0800 (PST)
M F <
mikefi...@gmail.com> wrote:
> I am having to resort to doing the following to get my answer of 4
>
> set_fact: myvar = "{{ ((SOMENUMBER|int) / 2)|replace('.0','') }}"
>
> Is there a better way to take a single integer stored as a string, and
> perform math and output an INT more simply?
I'm afraid there isn't any. Jinja is a template engine, hence the default
output is a string. This was the intention of the developers, I think.
Otherwise one would have to explicitly convert the output of mathematics
expressions to strings.
Some notes to the examples:
* The output of the example isn't INT. It's a string. The consequent task
confirms this
- debug:
msg: Variable myvar is a string
when: myvar is string
* Also the following task will fail
- debug:
msg: "{{ myvar + 4 }}"
with error message:
"Unexpected templating type error occurred on ({{ myvar + 4 }}):
coercing to Unicode: need string or buffer, int found"
* Instead the conversion to integer works as expected
- debug:
msg: "{{ myvar|int + 4 }}"
gives:
"msg": "8"
HTH
-vlado