Anomalous result in PLS

### Describe the bug

In the [Cross Decomposition PLS Regression code](https://github.com/scikit-learn/scikit-learn/blob/80598905e/sklearn/cross_decomposition/_pls.py), I get an anomalous result. 

Expected that the dot product would give a 0. But instead it gives a small negative number. 

I have to share custom data because I'm unable to reproduce the issue otherwise.



### Steps/Code to Reproduce

Below line [316 in the PLS code](https://github.com/scikit-learn/scikit-learn/blob/80598905e/sklearn/cross_decomposition/_pls.py#L316) please copy paste the following lines: 

**Step 1:** 

```
#             x_scores = np.dot(Xk, x_weights)

#             ###add code below
#             if k==0:
#                 print("Xk[77,:] below")
#                 print(Xk[77,:]) #prints: [ 0.  0.  0. -2.  0. -2.  0.  0.]
#                 print("x_weights below")
#                 print(x_weights) #prints: [ 9.86714867e-01 -1.15016017e-04  1.29434536e-07  8.74145546e-02 2.18974431e-04 -8.74145546e-02 -9.49063058e-02  4.58682399e-02]  
#                 print("np.dot(Xk[77,:], x_weights) below")
#                 print(np.dot(Xk[77,:], x_weights)) #prints -2.7755575615628914e-17 instead of printing 0.0
#                 print("***")
#                 print("x_scores[77] below")
#                 print(x_scores[77]) #prints -2.7755575615628914e-17 instead of printing 0.0
#             ###add code above


```

**Step 2:**
Add data for [X and y available in this gist](https://gist.github.com/vikram-s-narayan/398239bd2b36b2c14964e70dc36410b5). 

**Step 3:**
Run the following code: 
pls_test = PLSRegression(n_components=2)
pls_test.fit(X_,y_)

### Expected Results

If

```
Xk = np.array([ 0.,  0.,  0., -2.,  0., -2.,  0.,  0.])
x_weights = np.array([ 9.86714867e-01, -1.15016017e-04,  1.29434536e-07,  8.74145546e-02, 2.18974431e-04, -8.74145546e-02, -9.49063058e-02,  4.58682399e-02])

```
then it is expected that

`np.dot(Xk, x_weights) = 0.0`

### Actual Results

Instead, in the code above,

np.dot(Xk[77,:], x_weights) 

produces an output of -2.7755575615628914e-17

### Versions

```shell
System:
    python: 3.9.13 | packaged by conda-forge | (main, May 27 2022, 17:01:00)  [Clang 13.0.1 ]
executable: /Users/vikramnarayan/opt/anaconda3/envs/sklearn-env/bin/python
   machine: macOS-11.2.2-x86_64-i386-64bit

Python dependencies:
      sklearn: 1.2.dev0
          pip: 22.1.2
   setuptools: 62.3.2
        numpy: 1.22.4
        scipy: 1.8.1
       Cython: 0.29.30
       pandas: None
   matplotlib: None
       joblib: 1.1.0
threadpoolctl: 3.1.0

Built with OpenMP: False

threadpoolctl info:
       user_api: blas
   internal_api: openblas
         prefix: libopenblas
       filepath: /Users/vikramnarayan/opt/anaconda3/envs/sklearn-env/lib/libopenblasp-r0.3.20.dylib
        version: 0.3.20
threading_layer: openmp
   architecture: Nehalem
    num_threads: 8

       user_api: openmp
   internal_api: openmp
         prefix: libomp
       filepath: /Users/vikramnarayan/opt/anaconda3/envs/sklearn-env/lib/libomp.dylib
        version: None
    num_threads: 8
```

COMMENT:
The results propagate downstream and produce very different outputs in the x_rotations_ attribute than one would expect. 

There is no need to reopen it for now ... but if enough people bring it up, it may warrant further investigation. Thank you.

Labels: Question