I did a quick test and see what you mean. If you use number as your return type, you can't also use number data formatting or you only see the number part of your value.
I'd use either two fields or layout text with conditional formatting for this.
Field1 or layout text provides "USD" when InterimContacts::Currency = "USD"; Field 2 is your number field with currency formatting.
On your layout, you can put them together so that they appear to be a single field.
(With layout text and a conditional format expression, you can set the font size of Layout text "USD" to 500 when InterimContacts::Currency does not equal "USD" and then the layout text disappears.)
It's also possible to modify your calculation to append trailing 00 after the decimal--which may be needed if you are going to export the data. But if you were OK with data formatting originally, then such a more complex solution doesn't seem needed here.
Ideally I'd like to have the USD in the field itself so that if the price is only in 5 digits, the dollar amount can still properly be centered within the field making it clearer and look proper.
I know I can add "0's" at the end of the calculation but I don't know of a function that works like Right or Left but starting from the decimal point.
Let ( [ I = Int ( numberField ) ;
d = Filter ( numberfield - I ; 9876543210)
I & "." & Left ( d & "00" )