The .Net Framework 3.5 SP1 redistributable (the one that's around 230MB) contains everything (2.0 + SP1 + SP2, 3.0 + SP1 + SP2, 3.5 + SP1) in all supported architectures (x86, x64, ia64). This is the only download you need.
Download from here (click on .NET Framework 3.5 Service Pack 1 (Full Package)):
And then, you might want to install these updates:
IMPORTANT: After installing the .NET Framework 3.5 SP1 package (either the bootstrapper or the full package) you should immediately install the update KB959209 to address a set of known application compatibility issues.
There are 3 updates (for 2.0, 3.0, and 3.5) for 2 OS "groups" (XP/2003 or Vista/2008) for 3 architectures (x86, x64, or ia64), for a total of... 16 downloads! (I know, 3 * 2 * 3 = 18, but Server 2003 ia64 only supports up to 2.0). You need to install the 3 updates in order. Or you could run Windows Update after installing 3.5 SP1 and let it figure it out.
EDIT: To be clear, .Net 3.5 requires that 2.0 and 3.0 be installed and updated to SP1 level. .Net 3.5 SP1 requires that 2.0/3.0 be updated to SP2 level. But the 3.5(SP1) installers will do this automatically. That is, by installing 3.5 SP1, you don't need to worry about installing and updating 2.0 and 3.0 to SP1 or SP2. Just install 3.5 SP1 and you're done! (and the extra updates, 3.5 SP1.1?)
About the Client Profile, it can only be installed on x86 client machines that don't have ANY version of .Net installed, so it won't install on Vista (it already comes with .Net 3.0), any Windows Server version, nor any x64/ia64 OS. You can only install it on a Windows XP SP2+ (x86) that doesn't have any version of .Net installed, otherwise a full installation is done. The offline Client Profile installer is 255MB because it will try to do a client install first, if it can't it will fallback to a full install. Personally, I would just do a full install anyway.
float
and double
are floating binary point types. In other words, they represent a number like this:
10001.10010110011
The binary number and the location of the binary point are both encoded within the value.
decimal
is a floating decimal point type. In other words, they represent a number like this:
12345.65789
Again, the number and the location of the decimal point are both encoded within the value – that's what makes decimal
still a floating point type instead of a fixed point type.
The important thing to note is that humans are used to representing non-integers in a decimal form, and expect exact results in decimal representations; not all decimal numbers are exactly representable in binary floating point – 0.1, for example – so if you use a binary floating point value you'll actually get an approximation to 0.1. You'll still get approximations when using a floating decimal point as well – the result of dividing 1 by 3 can't be exactly represented, for example.
As for what to use when:
For values which are "naturally exact decimals" it's good to use decimal
. This is usually suitable for any concepts invented by humans: financial values are the most obvious example, but there are others too. Consider the score given to divers or ice skaters, for example.
For values which are more artefacts of nature which can't really be measured exactly anyway, float
/double
are more appropriate. For example, scientific data would usually be represented in this form. Here, the original values won't be "decimally accurate" to start with, so it's not important for the expected results to maintain the "decimal accuracy". Floating binary point types are much faster to work with than decimals.
Best Answer
New version upgrade (or install alongside) older versions. Why not experiment on a VM?