Link in Zwischenablage kopieren
Kopiert
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.
Link in Zwischenablage kopieren
Kopiert
You can use:
this.getField("textfield").value=Number(result).toFixed(2).replace(".00", "");
Link in Zwischenablage kopieren
Kopiert
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);
Link in Zwischenablage kopieren
Kopiert
When there is ". 00" at the end you can remove it.
Link in Zwischenablage kopieren
Kopiert
Good idea. Thanks.
Link in Zwischenablage kopieren
Kopiert
Can you please recommend a solution on how to do it? I'm thinking of using the split() function. Thanks.
Link in Zwischenablage kopieren
Kopiert
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.
Link in Zwischenablage kopieren
Kopiert
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
Link in Zwischenablage kopieren
Kopiert
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);
Link in Zwischenablage kopieren
Kopiert
>>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!
Link in Zwischenablage kopieren
Kopiert
You can use:
this.getField("textfield").value=Number(result).toFixed(2).replace(".00", "");
Link in Zwischenablage kopieren
Kopiert
Perfect! Thank you.
Link in Zwischenablage kopieren
Kopiert
That is not even close to what you ask in your post, next time explain better what you actually need.
Weitere Inspirationen, Events und Ressourcen finden Sie in der neuen Adobe Community
Jetzt ansehen