Ansible:如何进行数学运算并得到整数?

5
假设ansible_memtotal_mb是一个奇数。
- debug: msg="{{ ansible_memtotal_mb }}"

如何将ansible_memtotal_mb除以2,并将结果转换为整数:

- debug: msg="{{ ansible_memtotal_mb * 0.5 | int }}"

显然,后者没有起作用,因为(如果我没记错)ansible_memtotal_mb * 0.5返回一个字符串,而使用int过滤器将结果转换为0。请问您有什么建议吗?
1个回答

11

您将 int 过滤器应用于值 0.5

您想要将其应用于表达式的结果,因此:

- debug: msg="{{ (ansible_memtotal_mb * 0.5) | int }}"

啊啊啊 - 第二次访问时明白了:管道运算符的优先级高于乘法符号。 - Alexander Stohr
有一种更简单的方法 - 只需将ansible_memtotal除以二 "{{ ansible_memtotal_mb / 2 }}" - Dmitry Lihachev
1
@DmitryLihachev 这会触发浮点数除法,可能不会产生预期的结果。然而,{{ ansible_memtotal_mb // 2 }}(使用两个斜杠)执行整数除法,确实是一个更简单的解决方案。 - kske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接