- Inexactness lurks in various places.
double is very commonly encoded using base 2, such as with binary64.  As a  floating point number, it can be expected to be a Dyadic rational.  The key is that a finite floating-point number is a rational number.
Mathematically, arccos(-1) is π.  π is an irrational number.  Even with many digits of precision, a double cannot represent exactly π.  Instead a nearby value for acos(-1) is used called machine pi or perhaps M_PI.
Mathematically, arcsin(0.5) is π/6.  As above, asin(0.5) is a nearby value to π/6.
Division by 3 introduces potential inexactness.  About 2 of every double/3 results in an inexact, yet rounded, quotient.
- Of course it is not zero.
What is curious about this is that acos(-1) / 3 - asin(0.5) is about 1.57..., not 0.0.
I suspect OP was researching acos(-1) / 6 - asin(0.5).
Here subtraction of nearby values incurs catastrophic cancellation and a small, but non-zero difference, is a likely outcome.
So what can I do?
  I want to see for example how many asin(0.5) are there in Pi 
Tolerate marginal error in the calculation and employ the desired rounding.
double my_pi = acos(-1);
double target = asin(0.5);
long close_integer_quotient = lround(my_pi/target);