We are facing issue like the value is Number(Decimal) when user enters - 1595739.56 it gets round of to – 1595740. Which is a concern here. Also any number which is of 7 or more than 7 digit are getting round of.
We understand appian recommends the uses of ‘text field’ instead of floating point field, but this will lead to the column type changes in Database because those decimal columns can either be calculated in appian or in database stored procedures, hence as converting the column from decimal to varchar will required us to type cast them from varcharToDecimal before doing any calculation s and those are many fields which are used in calculations. Any urgent help/suggestion is really great help to me to progress.
Discussion posts and replies are publicly visible
This is just a matter of how Appian displays values. This is also documented.
https://docs.appian.com/suite/help/21.4/Appian_Data_Types.html#number-(decimal)
"For forms, use one of the following Text Functions to display a decimal number as a default value to avoid rounding."
Thanks Stefan for quick reply, yes the text function is really helpful, but as I have almost 15 to 18 decimal fields and are used in calculations so convert them to text and again if you use that text value to store in database of type decimal, it will get round off again same issue. For display text function is useful but storing those many required dB changes column to varchar, so instead am looking for any long or big decimal in Appian as used in Java?
What I want to say is that Appian does not round your decimals. Appian directly uses a Java double to store these values. And AFAIK there is no other way, with the exception of mapping to text.
okay..thanks Stefan for details.
Your problem is a well known one. You said you have 15 to 18 decimal digits, well that's more than Java Double holds. It only has 15-16 significant digits, with a whole swath of values that can't be properly expressed at that precision. Answer:
Appian, going to make this a Feature Request thread. Create a new datatype that maps to Java BigDecimal. I seriously don't know how you haven't already. BigDecimal was invented because Double isn't good enough for financial calculations. People use your platform to make business apps that do financial calculations.
I am facing an issue while comparing two decimal values to find whether one is greater than the other. I tried using fixed and todecimal functions, but the result is not as expected.
2 rule inputs:invoiceTotalAmount (Number Decimal) - value: 99999999999invoiceItemAmounts (Number Decimal Array) - value: {99999999999,2}
Expression:sum(ri!invoiceItemAmounts) > ri!invoiceTotalAmount returns false [Expected: true].
Your example works perfectly for me. Can you share some code?
Your rule inputs are already decimals. There is no need to somehow try to convert them into decimals.
Here is my code, it returns false for me
Please have a look at your test inputs. You entered an integer value which Appian then tries to convert into a decimal. Make it 99999999999.0 and it will work.
oh yeah, it worked. Thanks