6.08736e-005 means 6.08736 × 10-5 which is close to zero.
You can get much closer by using a more accurate conversion from degrees to radians but you will probably still get some rounding error. This is something that you should expect when working with floating point numbers.
You might want to use std::fixed (to disable scientific notation) and std::setprecision (to limit the number of digits after the decimal point). That way the number will appear as zero even though there is slight rounding errors in your calculations.
I advise to prefer doubles to floats; floats are smaller but much more imprecise. floats are better in the uncommon situation where you have to transmit or store a very large # of them (large varies depending on your bandwidth/space/needs) AND the data is of acceptable precision in that format. For almost anything else, doubles are probably the right choice.
Just kinda summarizing advice from Peter87 , John56432, lastchance into working code. I agree with Peter87's findings that scientific should be removed -- with just setprecision, the scientific would still show values very close to zero but not zero for sin(180). Still one funny point here is sin(360) is giving me negative 0!