Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Math.floor does not work

New Here ,
Jan 06, 2018 Jan 06, 2018

I need help with this rounding:

var v3 = (this.getField("valor_for").value-10)/2;

event.value = Math.floor(v3);

I need the value of the operation always be rounded down

thanks

TOPICS
Acrobat SDK and JavaScript , Windows
981
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jan 06, 2018 Jan 06, 2018

A good way to debug these things (besides actually running in the JavaScript debugger and stepping through your code one line at a time) is to add debug output to your script. Add these two lines just after you calculate v3:

console.println("v3 = " + v3);

console.println("Math.floor(v3) = " + Math.floor(v3));

Now you can see what your script does. It works correctly for me.

If you are not getting the correct results, and if the value of the "valor_for" field is calculated as well, you need to check

...
Translate
Community Expert ,
Jan 06, 2018 Jan 06, 2018

Please give some examples of when it’s not working correctly. What values do you enyet, what do you expect as output, and what is the actual output?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jan 06, 2018 Jan 06, 2018

When I write the code without Math.floor, the calculation works, for example:

var v3 = (this.getField("valor_for").value-10)/2;

event.value = (v3);

                                valor_for field                                          output of calculation (20-10)/2 = 5

fields_1.PNG

But when I put Math.floor, nothing happens:

var v3 = (this.getField("valor_for").value-10)/2;

event.value = Math.floor(v3);

                              valor_for field                                            output of calculation (31-10)/2 = 10,5 -

                                                                                          with Math.floor the result would be 10 right?

fields_2.PNG

these are my lines of code:

fields_3.PNG

What's wrong?

Thank you

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 06, 2018 Jan 06, 2018

Check the calculation order.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 06, 2018 Jan 06, 2018
LATEST

A good way to debug these things (besides actually running in the JavaScript debugger and stepping through your code one line at a time) is to add debug output to your script. Add these two lines just after you calculate v3:

console.println("v3 = " + v3);

console.println("Math.floor(v3) = " + Math.floor(v3));

Now you can see what your script does. It works correctly for me.

If you are not getting the correct results, and if the value of the "valor_for" field is calculated as well, you need to check your calculation order (which is what I think Bernd wanted to say): If the 2nd field gets calculated before the results of the first field are available, then you are working with the previous value, which could explain the behavior you are seeing.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines