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

Can this be calculated in acrobat?

Explorer ,
Aug 13, 2020 Aug 13, 2020

If possible, how to do it pls?

SmartSelect_20200813-151803_Chrome.jpg

TOPICS
Acrobat SDK and JavaScript
1.8K
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 , Aug 24, 2020 Aug 24, 2020

Use this:

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var hf = (.1*x)+(.001*x2);
var lf = 10+(.5*al)+(.05*al2);
var f = (hf/lf)+1;
var f1 = (1/f);
event.value = (1-f1)*.8;

 

EDIT: if you want it  to be more precise use this:

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var hf = (.1*x)+(.001*x2);
var lf =

...
Translate
Community Expert ,
Aug 13, 2020 Aug 13, 2020

Yes it is possible with the Math functions.

https://www.w3schools.com/js/js_math.asp 

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 ,
Aug 13, 2020 Aug 13, 2020

There's nothing special about this formula. The only operator that's a bit different is the square ("power of two") one, which can be done in JS using the pow (power) function of the Math object, like this:

Math.pow(x,y)

With y being 2 in this case.

The rest is just normal math operators ( + - / * ), and possibly parentheses.

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

Hi, guys I still need help with this one, I was trying to figure it out but I'm stuck how to get this into code.
field1 is dodge rating and field2 is area level
and in field3 should be calculated percentage.
I'v gathered some info on the net so hopefully some1 can help me pls.
this is info i got so far:
calculator: https://www.desmos.com/calculator/b7s5aqep3b
original info: https://lastepoch.gamepedia.com/Dodge
and here are some examples:

LScKEUY.png

Thanks in advance 🙂

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 ,
Aug 24, 2020 Aug 24, 2020

If you're interested I could write the script for you that does this calculation, for a small fee.

You can contact me privately via [try6767 at gmail.com] to discuss it further.

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

Thank you for your offer try67. I was working on javascript myself  but I'm not getting any result when using my code.

Can you tell me if i'm on right track at least?

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var lf = math.fraction(.1(x)+.001(x2),10+0.5(al)+0.05(al2))+1;
event.value = .8-(math.fraction(.8, lf));

I'm having trouble writing .001x2 getting "identifier starts immediately after numeric literal" so i used

parentheses but I don't think it's the right way.

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 ,
Aug 24, 2020 Aug 24, 2020

To multiply values use *:

E.g. 0.001 * x2

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 ,
Aug 24, 2020 Aug 24, 2020

- There's no such thing as math.fraction in core JavaScript.

- JS doesn't allow implicit operators. If you want to multiply two values you have to use the "*" operator between them.

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

Thanks il try with multiply.

I found math.fraction here: https://mathjs.org/docs/datatypes/fractions.html

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 ,
Aug 24, 2020 Aug 24, 2020

That's part of an external JS library. If you install it then you could use that command, but there's really no need to just for this one function. You can divide by using the "/" operator.

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

Thank you guys for help,I sort of got it to work in example: rating 527 and area level 5 i get 75% instead of 77%, also as area level get higher value  percentage should be lower and mine is getting higher. any advice?

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var lf = (.1*x+.001*x2,10+0.5*al+0.05*al2)+1;
event.value = .8-(.8/lf);

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 ,
Aug 24, 2020 Aug 24, 2020

Why does you use a comma there:

var lf = (.1*x+.001*x2,10+0.5*al+0.05*al2)+1;

 

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

I thought I was supposed to.Would that affect anything?

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 ,
Aug 24, 2020 Aug 24, 2020

You're not, and yes, it will cause it not to work correctly. What exactly did you intend to achieve by using it?

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
Explorer ,
Aug 24, 2020 Aug 24, 2020

I was trying to separate fractions because if i use / it works even worse.

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 ,
Aug 24, 2020 Aug 24, 2020

Use this:

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var hf = (.1*x)+(.001*x2);
var lf = 10+(.5*al)+(.05*al2);
var f = (hf/lf)+1;
var f1 = (1/f);
event.value = (1-f1)*.8;

 

EDIT: if you want it  to be more precise use this:

var x = Number(this.getField("Rating").value);
var x2 = Math.pow(x, 2);
var al = Number(this.getField("AreaLevel").value);
var al2 = Math.pow(al, 2);
var hf = (.1*x)+(.001*x2);
var lf = 10+(.5*al)+(.05*al2);
var f = (hf/lf)+1;
var f1 = (1/f);
if(al<15){
event.value = (1-f1)*.797;
}else if(al<27){
event.value = (1-f1)*.787;
}else if(al<34){
event.value = (1-f1)*.775;
}else if(al<43){
event.value = (1-f1)*.767;
}else if(al<48){
event.value = (1-f1)*.758;
}else if(al<60){
event.value = (1-f1)*.749;
}

 

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
Explorer ,
Aug 24, 2020 Aug 24, 2020
LATEST

Thank you Nesa so much that is working like a charm. Thank you all for helping 🙂

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