Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Issue rounding numbers in a textfield

meem23
Level 4
Level 4

Hi,  

I have text fields that are populated from XML data.  The data can be text or numeric, so I have a script in the initialized event to display a pattern if the data is a number:

this.format.picture.value = "num{zz9.9999%}";

Some of the numbers do not round correctly and this is causing manual editing which is a lot of work as I have to proof 250+ fields.  The point of automating these fields is to save time and effort.  Is there a solution to my problem?  I have found a few posts, but those solutions are not working for my situation - or at least I can't get it to work.

An example is a value of 0.0046875 and it should display as 0.4688%.  Instead it is displaying as 0.4687%.

1 Accepted Solution
meem23
Correct answer by
Level 4
Level 4

OMG - thank you soooo much - it works!

View solution in original post

5 Replies
Kosta_Prokopiu1
Employee
Employee

Hi,

your problem is that xx.yyyy5 is rounded down, xx.yyyy50001 is rounded up.

 

Try this approach for display in your initialize:

 

var content = parseFloat(this.rawValue);
if (!isNaN(content)) {
   this.format.picture.value = "num{zz9.9999%}";
   this.rawValue = content+0.000000001
}

 

0.0049995 will be rounded to 0.5000% as would 0.0049996

meem23
Level 4
Level 4

Thanks for your response, but this isn't working.  It still doesn't round to 0.4688% and I tried your example 0.0049995 and it displays 0.4999.

radzmar
Level 10
Level 10

You're facing a typical rounding issue of the IEEE 754 standard. You can bypass this by converting the dicimals into integers before rounding.

 

Keep in mind: The display pattern plays an important role when you're going to display percentage values. 

So with the pattern num{zz9.9999%} the input have to be a value between 1 (= 100 %) and 0 (= 0 %). So a value of 0.0046875 = 0.4687 %

With a pattern num{zz9.9999 '%'} where the percentage symbol is quoted, the values are displayed this way. 0.0046875 = 0.0047 %

 

To get rid of the rounding issue multiply the input value by a factor that will convert all dicimal placed into an integer. Then round that integer and divide it by the factor again to recreate the initial decimal places. 

$ = Round(NumField1 * 1000000) / 1000000

 

 

 

meem23
Correct answer by
Level 4
Level 4

OMG - thank you soooo much - it works!

View solution in original post