n7mafia Posted December 22, 2020 Posted December 22, 2020 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.
comment Posted December 22, 2020 Posted December 22, 2020 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 1
n7mafia Posted December 22, 2020 Author Posted December 22, 2020 (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 December 22, 2020 by Mafia2020
comment Posted December 22, 2020 Posted December 22, 2020 (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 December 22, 2020 by comment
n7mafia Posted December 22, 2020 Author Posted December 22, 2020 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.
Recommended Posts
This topic is 1423 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 accountSign in
Already have an account? Sign in here.
Sign In Now