System.Convert.ToInt vs (int)
c#, types
Solution
Casting to int is implicit truncation, not implicit flooring:
double d = -3.14;
int i = (int)d;
// i == -3
I choose Math.Floor or Math.Round to make my intentions more explicit.
Problem
I noticed in another post, someone had done something like: ``` double d = 3.1415; int i = Convert.ToInt32(Math.Floor(d)); ``` Why did they use the convert function, rather than: ``` double d = 3.1415; int i = (int)d; ``` which has an implicit floor and convert. Also, more concerning, I noticed in some production code I was reading: ``` double d = 3.1415; float f = Convert.ToSingle(d); ``` Is that the same as: ``` float f = (float)d; ``` Are all those otherwise implicit conversions just in the Convert class for completeness, or do they serve a purpose? I can understand a need for .ToString(), but not the rest.