Hi, I've ran into similar issues while converting measurements from Metric to Imperial or vice versa. Your issue here is that you are creating a circular reference. I suggest using two variables: one to track which field is currently the primary one, and another to hold the value of that primary field so we can access it without making Power Apps upset because of the circular reference. I tried to emulate your setup as best as possible.
DataCardValue 4
Default:
If(primaryInput = "DataCardValue7",
primaryInputValue * 4.423451,
0
)
OnChange:
Set('primaryInput', "DataCardValue4");
Set('primaryInputValue', Value(DataCardValue4.Text));
DataCardValue7
Default:
If(primaryInput = "DataCardValue4",
primaryInputValue * 0.224808942443,
0
)
OnChange:
Set('primaryInput', "DataCardValue7");
Set('primaryInputValue', Value(DataCardValue7.Text));
Both components' OnChange functions will set the primaryInput variable to its own name, and store its value in the primaryInputValue variable.
Both inputs will check if they are the primaryInput. If they are, they default to 0 like normal. If the other field is the primary, it will calculate its own value with what is stored in the variable (the other field's value) and do the appropriate calculation on it.
This is a pain if doing many fields this way, as each pair of variables would need to be uniquely named. Also use caution if renaming the components because hardcoded component names. This also behaves strangely when entering a value that changes which is the primary field: you must input the number twice because the first time you enter it, it defaults itself to 0. Not ideal, but usable.


I hope this helps you!