I have a program that handles simulation of the Ideal Gas Law (from physics and chemistry). The number of gas molecules at anytime is the number of moles of gas (usually less than 20 in my software) multiplied by Avogadros number (602210000000000000000000). The final value is displayed properly by a digit on-screen, but whenever I try to print it to a text file, it ends up printing some number, usually between 6 to 8 digits, that doesn't even seem related to the number of molecules.
It isn't a case of deleted trailing zeroes or an omission to multiply one of the two variables....I'm sure I'm doing something wrong.

Code:
var n = 0.9863; //moles

STRING* Molecules = str_create("\nNumber of Molecules: ");
	var Number = n * 602210000000000000000000;
	str_cat_num(Molecules, "%.0f", Number); //I've tried various combos here
        STRING* Moles = "\nwhich is ";
	str_cat_num(Moles, "%.0f mole(s) of gas", n);