spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.3k stars 1.61k forks source link

Wrong solution to an operation in the console #21608

Closed jcrismer closed 10 months ago

jcrismer commented 10 months ago

Description

What steps will reproduce the problem?

I was doing simple calculations and I realized an operation I wrote in the console yielded a wrong result.

0.5*1.255*10**2*(42.47*4.46)*4.46*0.188598
Out[47]: 9997.761941802171

(9758.771617-9997.761941802171)/9997.761941802171
Out[48]: -0.02390438242012104

0.5*1.255*10**2*(4.46)*4.46*0.188598
Out[49]: 235.40762754419995

0.5*10**2*(4.46)*4.46*0.188598
Out[50]: 187.57579884

42.47/64
Out[51]: 0.66359375

0.5*10**2*(4.46)*4.46*0.188598*42.47/64
Out[52]: 124.47412776148126

0.5*1.225*10**2*(4.46)*4.46*0.188598*42.47/64
Out[53]: 152.48080650781452

0.5*1.225*10**2*(4.46)*4.46*0.188598*42.47/64*64
Out[54]: 9758.77161650013

0.5*1.255*10**2*(42.47*4.46)*4.46*0.188598
Out[55]: 9997.761941802171

0.5*1.225*10**2*(42.47*4.46)*4.46*0.188598/64*64
Out[56]: 9758.771616500131

0.5*1.225*10**2*(42.47*4.46)*4.46*0.188598
Out[57]: 9758.771616500131

0.5*1.255*10**2*(42.47*4.46)*4.46*0.188598
Out[58]: 9997.761941802171

0.5*1.225*10**2*(42.47*4.46)*4.46*0.188598
Out[59]: 9758.771616500131

0.5*1.255*10**2*(42.47*4.46)*4.46*0.188598
Out[60]: 9997.761941802171

0.5*1.255*10**2*(4.46)*4.46*0.188598*42.47
Out[61]: 9997.761941802171

0.5*1.255*10**2*4.46*4.46*0.188598*42.47
Out[62]: 9997.761941802171

I needed to check the output of operation 47. As it was not giving the same result of my C code I needed to check I went trhough the fidderent step of my calculation and realized the same operation could yield 2 different results. I do not know how it is possible. The correct solution to 47 was first obtained at 54. Then touching the arrow keyboard touch to come back to operation 47 still give the same wrong result...

I have a mac with a M1 chip and my spyder version info is: Python 3.9.14 64-bit | Qt 5.15.2 | PyQt5 5.15.9 | macOS 14.1.2 (x86_64)

Versions

Dependencies

# Mandatory:
atomicwrites >=1.2.0                                                        :  1.4.1 (OK)
chardet >=2.0.0                                                             :  5.1.0 (OK)
cloudpickle >=0.5.0                                                         :  2.2.1 (OK)
cookiecutter >=1.6.0                                                        :  2.2.3 (OK)
diff_match_patch >=20181111                                                 :  20230430 (OK)
intervaltree >=3.0.2                                                        :  3.1.0 (OK)
IPython >=7.31.1,<9.0.0,!=8.8.0,!=8.9.0,!=8.10.0,!=8.11.0,!=8.12.0,!=8.12.1 :  8.14.0 (OK)
jedi >=0.17.2,<0.19.0                                                       :  0.18.2 (OK)
jellyfish >=0.7                                                             :  1.0.0 (OK)
jsonschema >=3.2.0                                                          :  4.18.4 (OK)
keyring >=17.0.0                                                            :  24.2.0 (OK)
nbconvert >=4.0                                                             :  7.7.1 (OK)
numpydoc >=0.6.0                                                            :  1.5.0 (OK)
parso >=0.7.0,<0.9.0                                                        :  0.8.3 (OK)
pexpect >=4.4.0                                                             :  4.8.0 (OK)
pickleshare >=0.4                                                           :  0.7.5 (OK)
psutil >=5.3                                                                :  5.9.5 (OK)
pygments >=2.0                                                              :  2.15.1 (OK)
pylint >=2.5.0,<3.0                                                         :  2.17.4 (OK)
pylint_venv >=3.0.2                                                         :  None (OK)
pyls_spyder >=0.4.0                                                         :  0.4.0 (OK)
pylsp >=1.7.4,<1.8.0                                                        :  1.7.4 (OK)
pylsp_black >=1.2.0,<3.0.0                                                  :  1.3.0 (OK)
qdarkstyle >=3.0.2,<3.2.0                                                   :  3.1 (OK)
qstylizer >=0.2.2                                                           :  0.2.2 (OK)
qtawesome >=1.2.1                                                           :  1.2.3 (OK)
qtconsole >=5.4.2,<5.5.0                                                    :  5.4.3 (OK)
qtpy >=2.1.0                                                                :  2.3.1 (OK)
rtree >=0.9.7                                                               :  1.0.1 (OK)
setuptools >=49.6.0                                                         :  68.0.0 (OK)
sphinx >=0.6.6                                                              :  5.1.1 (OK)
spyder_kernels >=2.4.4,<2.5.0                                               :  2.4.4 (OK)
textdistance >=4.2.0                                                        :  4.5.0 (OK)
three_merge >=0.1.1                                                         :  0.1.1 (OK)
watchdog >=0.10.3                                                           :  3.0.0 (OK)
zmq >=22.1.0                                                                :  25.1.0 (OK)

# Optional:
cython >=0.21                                                               :  3.0.0 (OK)
matplotlib >=3.0.0                                                          :  3.7.2 (OK)
numpy >=1.7                                                                 :  1.25.1 (OK)
pandas >=1.1.1                                                              :  2.0.3 (OK)
scipy >=0.17.0                                                              :  1.11.1 (OK)
sympy >=0.7.3                                                               :  1.12 (OK)

# Spyder plugins:
spyder_terminal.terminalplugin 1.2.2                                        :  1.2.2 (OK)

Environment

Environment ``` ```
ccordoba12 commented 10 months ago

Hey @jcrismer, thanks for reporting. This is an issue with floating point arithmetic in Python, so it's not related to Spyder. To learn more about that, please read the following resources: