# Get Integer part of float number and round

**URL:** <https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245>\
**Category:** Logstash\
**Created:** [September 10, 2020, 10:26pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245 "2020-09-10T22:26:31Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 10, 2020, 10:26pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/1 "2020-09-10T22:26:31Z")

</div>

Hello all,

how can extract integer part of a float field with logstash

`"field_fload" => 1.4573624`

i want to get 1, only the integer part of the float number.

And how can round up the float?

`"field_fload" => 0.923454`

and get a 1

Regards

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 10, 2020, 10:55pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/2 "2020-09-10T22:55:55Z")

</div>

I would do it using ruby

```
ruby { code => 'event.set("field_fload", even.get("field_fload").floor)' }

```

will round down. If you want to round up use ceil instead of floor. If you want to round to the nearest even number you could use

```
ruby { code => 'event.set("field_fload", even.get("field_fload").(half: :even))' }
```

---

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 10, 2020, 11:01pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/3 "2020-09-10T23:01:01Z")

</div>

Thank you badger, you are the best

---

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 11, 2020, 10:04am UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/4 "2020-09-11T10:04:46Z")

</div>

Hello Badger,

is this syntax correct?- logstash throws an error

`ruby { code => 'event.set("field_fload", even.get("field_fload").(half: :even))' }`

Best

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 11, 2020, 1:16pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/5 "2020-09-11T13:16:33Z")

</div>

> [@nino](#):
>
> even.get

That should be event.get

---

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 16, 2020, 9:24am UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/6 "2020-09-16T09:24:54Z")

</div>

Hello Badger,

trying you solution for getting only the integer part of a float is not working for me, i don't know what i am doing wrong.

`ruby { code => 'event.set("field_fload", event.get("my_field").(half: :even))' }`

I am getting this error:

```
Ruby exception ocurred: no implicit conversion of Float into String
Ruby exception ocurred: undefined method 'call' for -0.1456345_Float
```

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 16, 2020, 3:45pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/7 "2020-09-16T15:45:38Z")

</div>

Sorry about that, another typo in my answer. Try

```
ruby { code => 'event.set("field_fload", event.get("field_fload").round(half: :even))' }
```

---

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 16, 2020, 4:46pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/8 "2020-09-16T16:46:18Z")

</div>

Thanks Badger, now is working but...

Is rounding up:

```
{
"field_value_integer_part" => 5
"field_to_extract_integer_part" => 4.77
}

```

The integer should be 4 instead of 5

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 16, 2020, 4:49pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/9 "2020-09-16T16:49:11Z")

</div>

I am unable to explain why .round(half: :even) would round to an odd number.

---

<div class="post-metadata">

**Author:** ![nino](https://avatars.discourse-cdn.com/v4/letter/n/b9bd4f/32.png) [@nino](https://discuss.elastic.co/u/nino)\
**Post date:** [September 16, 2020, 4:51pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/10 "2020-09-16T16:51:03Z")

</div>

No matter Badger, i am going to investigate. Thanks for your help!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [October 14, 2020, 4:51pm UTC](https://discuss.elastic.co/t/get-integer-part-of-float-number-and-round/248245/11 "2020-10-14T16:51:08Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
