Now Ashley can correct me if I'm wrong, but I believe C2 just uses JavaScript's logic and datatypes. Now JS is an untyped, or dynamically typed language. That means that you generally don't declare what type a variable is going to be, it's taken care of behind the scenes. This makes predicting round of errors and precision errors a nightmare because it's all guesswork on what type JS is choosing at that point in time. As a general rule, JS will pick the most suitable type, so:
"asdasd" = string
65161 = int
65651651684651654165168416517165141651 = long
1/3 = double
1/4 = float