Jump to content
Claris Engage 2025 - March 25-26 Austin Texas ×

This topic is 1430 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Posted

I have a calculation that goes like that, I input a number on "Base Imponibile" (say 100), it adds 15% (it gets me 115), it then calculates 4% to the previous result (115) and it gets me 4,60, I then add 2 and the total is 121,60 which is perfect.

And that's the part that works just fine. But I then want to make a reverse calculation, where I input the expected result of Total Calculation and tells me all the other values and here it's where things go awry.
 

Quote

 

Input Field of Total Calculation:
121,60

Calculation 2 removes 4% from the previous field => (wTotale-(wTotale*100/104))
4,68 (and here it is the first error, it is supposed to return 4,60)

Calculation 1 calculates 15% of the yet unknown "Base Imponibile" field => (wTotale-wCPA)-wBaseImponibile
16,74 (and here it ss the second error, it is supposed to return 15,00)

Calculation 3 it is supposed to calculate the last value "Base Imponibile" => wTotale-2-(wTotale-(wTotale*100/119))
100,18 (and here it is the third error, since it is supposed to return 100,00)

 

I'm attaching the initial calculation that works as a reference and the reverse calculation which doesn't work as an example. The "2" that gets subtracted in the reverse calculation is a fixed value of a small tax that I have to deduct (imposta di bollo).

I have a feeling that the reverse calculation goes crazy because of some unwanted rounding somewhere, but I am not to sure, so I seek the opinion of more calculation versed persons around.

ccc.png

ddd.png

Posted
44 minutes ago, Mafia2020 said:

I then want to make a reverse calculation, where I input the expected result of Total Calculation and tells me all the other values

Consider:

Let ( [
a = Input - 2 ; 
b = a / 1.04 ;
c = a - b ; 
d = b / 1.15 ;
e = b - d
] ;
List ( a ; b ; c ; d ; e  )
)

With Input = 121.6, this returns:

119.6
115
4.6
100
15

 

  • Like 1
Posted (edited)
2 hours ago, comment said:

Consider:




Let ( [
a = Input - 2 ; 
b = a / 1.04 ;
c = a - b ; 
d = b / 1.15 ;
e = b - d
] ;
List ( a ; b ; c ; d ; e  )
)

With Input = 121.6, this returns:




119.6
115
4.6
100
15

 

This returns the exact numbers I need to get and it seems a much more elegant solution than the faulty one I devised. Only, I was wondering, can the LIST part be delegated to single fields instead of having one big field with all the results? So for instance have a field that lists separately A, B, C, etc taking the input from the previous calculation with the LET function? Otherwhise instead of getting for instance

Quote

100,00
15,00
4,60


I get this
 

Quote

100154,60

Also, for some reasons I can tell FM to add the mandatory 2 decimals only for the last number while the first two results are 100 and 15 rather than 100,00 and 15,00

Edited by Mafia2020
Posted (edited)
17 minutes ago, Mafia2020 said:

can the LIST part be delegated to single fields

Of course it can. The list was just a convenient way of showing how to calculate all parts at once. You can easily split this to individual fields - for example:

Let ( [
a = Input - 2 ; 
b = a / 1.04 
] ;
a - b
)

will return 4.6 in your example.

Edited by comment
Posted
2 hours ago, comment said:

Of course it can. The list was just a convenient way of showing how to calculate all parts at once. You can easily split this to individual fields - for example:


Let ( [
a = Input - 2 ; 
b = a / 1.04 
] ;
a - b
)

will return 4.6 in your example.

Thank you for your patience and pointers, it now works exactly as I intended to.

This topic is 1430 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.