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:
You expect exactly zero but get a very small number of the order of 1e-17, this seems due to floating point precision ... I don't think there is any bug here.

I am going to close this one, feel free to reopen if I missed something.

Labels: Question