Beenden
  • Globale Community
    • Sprache:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티

display number with two decimals only if not interger

Entdecker ,
Nov 19, 2020 Nov 19, 2020

Hello,

 

I'm doing some operations with numbers and I want to display the final value in a text field as:

if the number is integer without decimals 100;200;32;15 etc

if the number is not integer with two decimals. 99.12; 23.11 etc

 

Now I'm using 

this.getField("textfield").value=Number(result).toFixed(2);

but it always displays decimals - like 100.00 etc.

 

Is there a function or format setting to accomplish this?

Thank you very much.

THEMEN
PDF Forms
3.9K
Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
1 AKZEPTIERTE LÖSUNG
Community Expert ,
Nov 19, 2020 Nov 19, 2020

You can use:

this.getField("textfield").value=Number(result).toFixed(2).replace(".00", "");

Lösung in ursprünglichem Beitrag anzeigen

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Community Expert ,
Nov 19, 2020 Nov 19, 2020

Try like this:

this.getField("textfield").value = Math.round((result)*100)/100;

EDIT: if there is more then 2 decimals it will round to 2 but if there is 1 it will show 1, if you still want to show 1 decimal as 2(100.2 as 100.20) use like this:

this.getField("textfield").value = (Math.round((result)*100)/100).toFixed(2);

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Community Expert ,
Nov 19, 2020 Nov 19, 2020

When there is ". 00" at the end you can remove it. 

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Entdecker ,
Nov 19, 2020 Nov 19, 2020

Good idea. Thanks.

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Entdecker ,
Nov 19, 2020 Nov 19, 2020

Can you please recommend a solution on how to do it? I'm thinking of using the split() function. Thanks.

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Community Expert ,
Nov 19, 2020 Nov 19, 2020

Here is some simple, and very direct code to use in the Custom Format script.

 

if(!Number.isInteger(event.value))

    event.value = util.printf("%.2f",event.value);

 

It uses the built-in JavaScript function for testing if a number is an integer. If it is not an integer, then the number if formatted with 2 decimal places.  The correct way to format  numbers is with the "util.printf" function. 

 

 

Thom Parker - Software Developer at PDFScripting
Use the Acrobat JavaScript Reference early and often

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Entdecker ,
Nov 19, 2020 Nov 19, 2020

This always shows 2 decimals. I added the code in the Custom Format script section for the textfield.

I have a button click - on button click I set 

this.getField("result").value = 2;

 

The result is 2.00. maybe I'm missing something

 

 

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Community Expert ,
Nov 19, 2020 Nov 19, 2020

Where does this number come from?  If it is the result of a caculation, then it is likely to always be a decimal number, even if the result does not have any decimal places, i.e., it is never an integer. 

So what you really want to detect is a 0 decimal value. 

 

So do it this way. 

if(/\.(\d+)/.test(event.value) && (Number(RegExp.$1)>0))
  event.value = util.printf("%.2f",event.value);
else
  event.value = util.printf("%d",event.value);
Thom Parker - Software Developer at PDFScripting
Use the Acrobat JavaScript Reference early and often

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Entdecker ,
Nov 19, 2020 Nov 19, 2020
AKTUELL

>>Where does this number come from?

For testing, I just used

this.getField("Textfield").value = 2; on a button click.

 

The new code is working fine. Thank you!

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Community Expert ,
Nov 19, 2020 Nov 19, 2020

You can use:

this.getField("textfield").value=Number(result).toFixed(2).replace(".00", "");

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Entdecker ,
Nov 19, 2020 Nov 19, 2020

Perfect! Thank you.

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Enthusiast ,
Nov 19, 2020 Nov 19, 2020

That is not even close to what you ask in your post, next time explain better what you actually need.

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines