I don't know much about LLVM compilers, it is odd that you get 100.000008 though, since you have only whole numbers in there, even in the intermediate results. However even with G++, you should still not rely to get an accurate result on floating point types calculations due to the (binary) rounding errors in the calculation, which is not the case for regular types (Note with regular types - what I mean by that is you won't have rounding but truncation - floating point part gets ignored)
For example, try using 0.1 in g++, you will notice that the result is not 0.1 (if you look thru the debugger or compare 0.1f with 0.1, cout or printf will not show enough decimals)
Rounding error
Now if you want to compare 2 floating point numbers without looking if the absolute difference is below epsilon, I recommend you use a regular int type multiplied by a certain pre-scaler (x10^n) and then use for example, the last 3 digits of the number as the floating point part, for example instead of comparing volts, compare millivolts or microvolts, and then remove the pre-scaler at the end (recast to float/double before that) when you want to print the result.