数字是任何编程语言的重要组成部分,Python也不例外。但是我们真正理解数字吗?比如在Python计算0.1+0.2 等多少?
或者看下面的结果
为什么会是上面的结果?浮点数在计算机中是以二进制形式存储的,但并非所有的十进制小数都能精确地转换为二进制小数。这种情况类似于十进制系统无法精确表示1/3(只能近似为0.333...),二进制系统也无法精确表示某些十进制小数,如0.1或0.2。
接下来,我们逐步展开在python 的数字的相关内容,包括整形和浮点型的区别、如何四舍五入到指定小数位数以及如何格式化数字显示。
整数
Python有三种内置的数值数据类型:整数、浮点数和复数。我们下来看看整数:
整数是一个没有小数位的整数。例如,1是一个整数,但1.0不是。整数数据类型的名称是int,你可以通过type()函数看到它:
你可以通过键入所需的数字来创建一个整数。例如,以下代码将整数25赋值给变量num:
也可以使用
int()
函数将包含整数的字符串转换为数字,这在处理用户输入时特别有用。例如,以下代码将字符串"25"转换为整数25:
千分问表示:手写大数字时,你通常会将数字分成每三位一组,并用逗号或小数点分隔。数字1,000,000比1000000更容易阅读。
在Python中,你不能在整数字面量中使用逗号来分组数字,但你可以使用下划线(_)。以下两种方式都是有效的,用于以整数字面量的形式表示一百万:
python中整数可以有多大是没有限制的,无论多大Python可以毫无问题地处理它!
浮点数
浮点数(简称float)是一个有小数位的数字。1.0是一个浮点数,-2.75也是。浮点数据类型的名称是float:
与整数一样,浮点数可以通过浮点数字字符串创建,或者通过将字符串转换为浮点数来创建,使用
float()
函数:
表示浮点数字的方式有三种。以下每种方式都创建了一个值为一百万的浮点数字面量:
E表示法是指数表示法的简称。你可能在计算器上看到过这种表示法,用于表示太大而无法在屏幕上显示的数字。
要使用E表示法编写浮点数字面量,请键入一个数字,后跟字母e,然后再键入另一个数字。Python将e左边的数字乘以10的e右边数字的次幂。因此,1e6等价于1×10⁶。
Python还使用E表示法来显示大的浮点数:
浮点数200000000000000000.0会显示为2e+17。+号表示指数17是一个正数。你也可以使用负数作为指数:
与整数不同,浮点数确实有一个最大大小。最大浮点数取决于你的系统,但类似于2e400的数字应该远远超出了大多数机器的能力。2e400是2×10⁴⁰⁰,这远远超过了宇宙中原子的总数!
算术运算符和表达式
接下来我们介绍一下在Python中使用数字进行基本的算术运算,如加法、减法、乘法和除法。同时,您还将学习在代码中编写数学表达式的一些约定。
加法
加法使用+运算符进行:
在+运算符两侧的两个数被称为操作数。在上面的例子中,两个操作数都是整数,但操作数不必是同一类型。将一个整数与一个浮点数相加:
减法
要减去两个数,只需在它们之间放置一个-运算符:
-运算符也用于表示负数:
一个数中减去一个负数,但正如你下面看到的那样,这有时会看起来很令人困惑:
在编写代码时,清晰地表达你的意图很重要,尤其是当涉及到负数和减法时。你可以使用括号来明确你的计算顺序,虽然对于简单的表达式来说,Python的运算符优先级(先乘除后加减,从左到右)通常足够清晰。但对于更复杂的表达式,使用括号可以使代码更易于理解。
乘法
要乘以两个数,使用*运算符:
乘法中得到的数字类型遵循与加法和减法相同的规则。两个整数相乘的结果是一个整数,而一个数与一个浮点数相乘的结果是一个浮点数。
除法
/运算符用于除以两个数:
整除
如果认为写
int(5.0 / 2)
有点冗长,Python提供了第二个除法运算符,称为整数除法运算符(//),也称为向下取整除法运算符:
指数
可以使用 ** 运算符将一个数提升为幂次: