Numerics in Mathematica can be as precise as you like. However, precision comes at price; you pay for it in computation time and in additional coding effort.
In Mathematica there are several computational classes of non-complex numbers, which form a tree like this.

The computation you made was made with machine reals because you included 0.5 as a term. Mathematica always performs any computation expressed with even one machine number term using machine (CPU) arithmetic because that is the fastest way to compute for numerical problems.
Now let's do at your computation with rationals and arbitrary precision numbers as well as machine numbers. I have chosen precision of 50 decimal places for this demonstration.
result = Sin[2 π {.5, 1/2, .5`50}]

Wolfram|Alpha probably applied Chop
to its answer. Let's do that too.
result // Chop
{0, 0, 0}
Now all three results agree with Wolfram|Alpha.
The way that the machine arithmetic result is expressed is useful; it informs you of the error that your computer's built-in machine floating-point arithmetic produces.
1/2
instead of0.5
. $\endgroup$