# Workaround to have int be a decimal?

I get it that an `int` can’t start with a 0 or a decimal, but is there a workaround for this?

Here’s my use case:

``````---
sizes: [".25", ".5", "1", "2"]
width: 600
---
{{ \$sizes := .Params.sizes}}
{{ \$width := .Params.width}}
``````

This parameter is then ranged and each index of the array is multiplied
`{{ \$multiply_size := mul (int \$width) (int (index \$sizes \$i )) }}`

All of this works as long as it’s a whole number. Any ideas on a workaround to get decimals to work in this scenario?

When you multiply an integer with an integer, you get an `int` as the result.
But when you multiply an integer with a decimal value, you get a decimal value as the result.

You can try something like this:

``````{{ \$widthDecimal := mul (int \$width) 1.0 }}
{{ \$multiply_size := mul \$widthDecimal (int (index \$sizes \$i )) }}
``````
1 Like

What @Jura said is my go-to truck as well.

In this case though, you simply need to use `float` instead of `int`.

`(float foo)` would be equivalent to `(mul foo 1.0)`.

1 Like

Also, do you need the sizes to be strings? Unfortunately, Hugo converts them to strings anyways internally (ref) but for clarity you can write:

``````sizes: [0.25, 0.5, 1.0, 2.0]
``````

I didn’t even realise the `float` function. Thanks! With `float` the code simply becomes if I’m not mistaken:

``````{{ \$multiply_size := mul (int \$width) (float (index \$sizes \$i )) }}
``````
2 Likes

Thanks @Jura and @kaushalmodi using float did the trick!