yq/pkg/yqlib/doc/operators/modulo.md

69 lines
1.0 KiB
Markdown
Raw Normal View History

2023-03-18 03:51:31 +00:00
# Modulo
2023-03-18 03:51:31 +00:00
Arithmetic modulo operator, returns the remainder from dividing two numbers.
2023-03-18 03:53:36 +00:00
## Number modulo - int
If the lhs and rhs are ints then the expression will be calculated with ints.
Given a sample.yml file of:
```yaml
2023-05-09 03:51:21 +00:00
{a: 13, b: 2}
```
then
```bash
yq '.a = .a % .b' sample.yml
```
will output
```yaml
2023-05-09 03:51:21 +00:00
{a: 1, b: 2}
```
## Number modulo - float
If the lhs or rhs are floats then the expression will be calculated with floats.
Given a sample.yml file of:
```yaml
2023-05-09 03:51:21 +00:00
{a: 12, b: 2.5}
```
then
```bash
yq '.a = .a % .b' sample.yml
```
will output
```yaml
2023-05-09 03:51:21 +00:00
{a: !!float 2, b: 2.5}
```
## Number modulo - int by zero
If the lhs is an int and rhs is a 0 the result is an error.
Given a sample.yml file of:
```yaml
2023-05-09 03:51:21 +00:00
{a: 1, b: 0}
```
then
```bash
yq '.a = .a % .b' sample.yml
```
will output
```bash
Error: cannot modulo by 0
```
## Number modulo - float by zero
If the lhs is a float and rhs is a 0 the result is NaN.
Given a sample.yml file of:
```yaml
2023-05-09 03:51:21 +00:00
{a: 1.1, b: 0}
```
then
```bash
yq '.a = .a % .b' sample.yml
```
will output
```yaml
2023-05-09 03:51:21 +00:00
{a: !!float NaN, b: 0}
```