Home > Backend Development > Python Tutorial > Detailed explanation of the principles and operations of floating point numbers in Python

Detailed explanation of the principles and operations of floating point numbers in Python

黄舟
Release: 2017-10-12 10:56:44
Original
3177 people have browsed it

This article mainly introduces the principles and operation analysis of floating point numbers in Python, analyzes common errors in Python floating point number operations in the form of examples, and briefly explains the principles of floating point number operations and implementation methods of comparison operations. Friends in need You can refer to the following

The examples in this article describe the principles and operations of floating point numbers in Python. I share it with you for your reference. The details are as follows:

Let’s first look at a counterintuitive example:


>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 错误被累加
Copy after login

Let’s look at another one that is more common and directly affects judgment. Logical example:


>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False
Copy after login

The reason why the above results occur is that Python (more precisely, the computer hardware architecture) represents floating-point numbers. Let’s take a look. The computer (based on binary) represents the decimal decimal 0.1. For the method of converting a decimal decimal to a binary decimal, please see Python Decimal Decimal and Binary Decimal Conversion. When converting decimal 0.1 to binary, the result is 0.0001100110011001...., an infinite loop. The computer cannot display infinite results and can only truncate the results. This is the root of the floating point precision problem.

“==” on floats

Based on the above considerations, when we perform equality comparisons of floating point numbers, we must be particularly careful and directly There is a problem with using ==. A common approach is not to test whether the floating point numbers are equal, but to test whether the two are close enough,


>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判断是否小于某一小量
Copy after login

The above is the detailed content of Detailed explanation of the principles and operations of floating point numbers in Python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template