Get rid of the quotes and make sure that your data is of type number in that field and not text.
"3" > "1000000"
is a true statement.
3 > 10
"3" (three inside quotes) is data type text and text gets compared alphabetically.
This possibly should be a separate post but whenever I make updates in FMP like this, is there a way to force it to only affect future data? It looks like this update changed a bunch of records from the past few years and adjusted all the financials (which we don't want). Is there a setting that tells FMP to not make any changes to fields that were already calculated?
Yes, that's possible. It's called 'design for that'
Don't use calculated fields for things that only need to be set once and will never change. If you do use calculations then add an if or case branch based on the creation date of the record (= ugly!)
One small step better than calculated fields are auto-enter calculations but even here you have to be careful because these can retrigger under certain circumstances.
A scripted workflow where the script takes care of setting values is my preference. It avoids retriggering and produces static data that is fast to report on and search on.
It's a classic design pitfall that many fall into.