Skip to main content
Greenprints Clean NRG
Known Participant
Sep 16, 2020 3:24 PM UTC
Answered

Rounding to the Nearest 5, but making 5 come back as 5 instead of 10

Hi,

 

I used the following script:

Math.ceil(N / 5) * 5;

 

But it's not quite giving me what I want. For instance "5" returns "10", but I need it to return "5"

I need it to look like the following:

0.01 - 5.00 = 5

5.01 - 10.00 = 10

10.01 - 15.00 = 15

15.01 - 20.00 = 20

This topic is closed to new replies. Start a new post to keep the conversation going.
ls_rbls
ls_rblsCorrect answer
Community Expert
Sep 16, 2020 5:01 PM UTC

Using the script below gives you the results that you're looking with any of the values in those ranges.

 

I may be wrong, but is working on my end.

 

var f = Math.ceil(event.target.value / 5) * 5;

event.value = util.printf("%.0f", f);
Technical Generalist

15 replies

ls_rbls
Community Expert
ls_rblsCommunity ExpertCorrect answer
Community Expert
Sep 16, 2020 5:01 PM UTC

Using the script below gives you the results that you're looking with any of the values in those ranges.

 

I may be wrong, but is working on my end.

 

var f = Math.ceil(event.target.value / 5) * 5;

event.value = util.printf("%.0f", f);
Translate
Technical Generalist
ls_rbls
Community Expert
Community Expert
Sep 16, 2020 5:03 PM UTC

This is a custom calucation script . 

Translate
Technical Generalist
Bernd Alheit
Community Expert
Community Expert
Sep 16, 2020 4:11 PM UTC

What does you get when you use N / 5

Translate
Greenprints Clean NRG
Known Participant
Sep 16, 2020 4:23 PM UTC

It doesn't round to the nearest 5 at all.

 

 

 

 

Translate
Bernd Alheit
Community Expert
Community Expert
Sep 16, 2020 4:28 PM UTC

So you get 2 for 5.0 / 5 ?

Translate
ls_rbls
Community Expert
Community Expert
Sep 16, 2020 3:59 PM UTC

Please define what you're trying to do.

 

You said that you're using a custom calculation script. Based on what you posted your rounding up a number that is divided by 5, then you multply that result by 5.

 

Then in the examples below you're using substraction. And not only that is a subsctraction but you're also substracting a larger number from a smaller number; the larger number also has a negative value.  So you're ccreating a confusion here.

 

If all you need is to avoid the zeroes appearing to the right of the decimal point use the utilprintf() method and if you don't want anything to be rounded up , nand all you want is to truncate a number that has decimal value then use the toFixed() method.

 

For the util.printf() method you should use Something like this: 

 

event.value = util.printf("%.0f", event.target.value);
Translate
Technical Generalist
Greenprints Clean NRG
Known Participant
Sep 16, 2020 4:10 PM UTC

Sorry, the lower values are not a subtraction, but a range. I need all numbers between 0.01 to 5.00 to return the value of "5"

Translate
Nesa Nurani
Community Expert
Community Expert
Sep 16, 2020 3:51 PM UTC

Whit that calculation they all will return 5.

To get results you want, you need something like this: Math.ceil(N/5)*X , X being field where you input first value (0.01, 5.01. 10.01...etc)

Translate
Greenprints Clean NRG
Known Participant
Sep 16, 2020 4:13 PM UTC

Basically, I'm trying to round up to the nearest 5, but when the info is 5, I want it to stay at 5 and not round up to 10.

Translate
Nesa Nurani
Community Expert
Community Expert
Sep 16, 2020 4:35 PM UTC

So those are range and not substractions, In that case your code should work fine, there must be something else in your file. Check field calculation order maybe.

Translate