用python计算0到100之间有多少个数可以被四整除?

Python016

用python计算0到100之间有多少个数可以被四整除?,第1张

#用python计算0到100之间有多少个数可以被4整除

def fun_TimesFoure():

lst = []

i = 0

while i<101:

if i % 4 == 0:

lst.append(i)

i += 1

print(f"0到100之间有{len(lst)}个数可以被4整除")

print("它们分别是:",lst)

return

python为什么会出现这种错误?

这是 Python 的浮点数精度问题,因为 Python 在存储浮点数的方法是存储二进制的科学计数法。

8 字节 64 位存储空间分配了 52 位来存储浮点数的有效数字,11 位存储指数,1 位存储正负号。

简单来说,因为小数点后面理论上可以有无限位数,所以不可能在有限字节中精确存储,所以用的是类似科学计数法的非精确存储。我们用分数来打比方,0.333334 可以用 1/3 来表示,但是 1/3 不等于 0.333334。所以在 Python 中就出现了这个问题,不光是 Python,其他语言也有类似的问题。

如何解决这种问题

接下来我们看看如何解决这个问题。

对于精确度要求不高的场景,可以计算后使用 round 函数近似。

对于确定小数位数的场景,例如金额 1.01,固定两位小数,则可以乘以 100 以后用整型保存。

对于精确度要求高的场景,Python 有 decimal 模块处理。

Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。

其中数字又包含整型(整型又包括标准整型、长整型(Python2.7及之前版本有))、浮点型、复数类型、布尔型(布尔型就是只有两个值的整型)、这几种数字类型。列表、元组、字符串都是序列。

1、数字

数字类型是不可更改的对象。对变量改变数字值就是生成/创建新的对象。Python支持多种数字类型:

整型(标准整型和长整型(Python2.7及之前的有这种类型))、布尔型、双精度浮点型、十进制浮点型、复数。

2、标准整型

int,标准整型,在大多数32位机器上标准整型取值范围是-2^31到2^31-1,也就是-2147483648~2147483647,如果在64位机器使用64位编译器,那么这个系统的标准整型将是64位。

3、布尔型

bool,从Python2.3开始Python中添加了布尔类型。布尔类型有两种True和False。对于没有__nozero__方法的对象默认是True。

对于值为0的数字、空集(空列表、空元组、空字典等)在Python中的布尔类型中都是False。

>>> bool(1)

True

>>> bool('a')

True

>>> bool(0)

False

>>> bool('')

False

4、浮点型

float,每个浮点型占8个字节(64位),完全遵守IEEE754号规范(52M/11E/1S),其中52个位用于表示底,11个位用于表示指数(可表示的范围大约是±10**308.25),剩下的一个位表示符号。这看上去相当完美,然而,实际精度依赖于机器架构和创建Python解释器的编译器。

浮点型值通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法)。在e和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)。

以上是Python核心编程的对浮点型(双精度浮点型)的说明。经过Python实测浮点型默认长度是24字节如果超出这个范围会自动

5、复数类型

complex,在复数中虚数不能单独存在,它们总是和一个值为0.0的实数部分一起来构成一个复数。复数由实数部分和虚数部分构成。表示虚数的语法:real+imagj。

实数部分和虚数部分都是浮点型。虚数部分必须有后缀j或J。