Why is the result calculated by the sin function of shader inconsistent with the result of the sin function of JS

When I used THREE.ShaderMaterial, I was surprised to find that some of the values calculated using shader’s sin function were incorrect from the values calculated by js’s sin function.

I can’t figure out why. Does anyone know why? I would appreciate it if you could tell me.

I am an example in which I used the sin function of js and shader to calculate the result value with an angle of 35.398006439208984, and finally their error was greater than 0.00000005.

JavaScript uses 64-bit floating point precision. In GLSL, you have configurable precision: highp, mediump, or lowp, all of which are lower-precision than 64 bits:

Thank you very much for your reply.