B1 · 第3集 · 4:15
Python中的数字类型
本集讲解Python中整数和浮点数的区别,强调整数精度无限、计算精确,而浮点数存在精度限制,并介绍运算中类型自动转换的规则。
来源:jmbarbier / peertube.solidev.net · 许可:CC BY-SA 4.0
字幕
à part évidemment la mémoire, la taille de la mémoire de l'ordinateur,
当然,除了内存之外,还有计算机的内存容量,
et plus les nombres sont gros, forcément ça prendra plus de temps.
而且数字越大,计算自然就越耗时。
Mais on peut avoir des nombres absolument monstrueux.
但我们可以使用绝对巨大的数字。
Tant que ça reste des nombres entiers.
只要它们仍是整数。
Donc l'avantage des nombres entiers.
因此,整数的优势在于:
On n'a pas d'erreur d'arrondi.
不会产生舍入误差。
On reste sur des calculs exacts tout le temps, et
我们始终进行精确计算,
leur taille. en Python.
而它们在 Python 中的大小,
est illimité, à part jusque dans la limite.
理论上没有限制,仅受限于
de la mémoire de l'ordi
计算机的内存。
d'accord ce qui nous permet de pouvoir écrire des trucs monstrueux comme ça print
好的,这使我们能直接写出类似这样的巨大数值:print
deux puissance mille avec un résultat exact alors que vous prendriez votre
2 的 1000 次方,结果完全精确;
calculatrice ou un résultat en faisant la même chose mais avec un nombre flottant
计算器,或用浮点数做同样运算,
print deux points zéro ou même deux points, comme ça,
比如写成 2.0 或干脆 2.,
ça suffit pour dire que c'est un nombre
就足以表明这是一个浮点数,
flottant, puissance mille.
再求它的 1000 次方。
Là vous voyez que j'ai
这里您可以看到,
beaucoup moins de précision.
我的精度明显降低了。
Donc voilà, dans la mesure du raisonnable,
总之,在合理范围内,
on va essayer d'utiliser toujours des nombres entiers,
我们应尽量始终使用整数,
et éventuellement quand il y a quand même besoin,
而有时确实需要时,
qu'est- ce qui peut transformer un calcul en nombres entiers en calcul avec des
什么操作会把整数运算变成带小数点的运算呢?
virgules, c'est la division.
那就是除法。
Donc il y a plusieurs stratégies,
因此有几种策略:
soit on multiplie tout par un certain nombre pour rester en mode entier,
一种是将所有数值乘以某个固定倍数,从而保持整数运算模式,
comme on a eu par exemple quand on peut faire le choix de choisir les dixièmes ou
例如,我们可以选择用十分之一或百分之一分币来存储和计算价格,
les centièmes de centimes pour stocker et calculer avec des prix,
就像我们之前讨论过的那样;
ou alors l'autre possibilité, c'est on fait tous nos calculs et on fait la division
另一种方法则是先完成全部计算,
en dernier lieu uniquement à la fin.
最后才进行除法运算。
Donc il vaut mieux faire un x 100
因此,最好先乘以100
puis divisé par 1000 qu'un
再除以1000,而不是先除以1000
divisé par 1000 suivi d'un x 100.
再乘以100。
Voilà pour les nombres, d'accord?
关于数字,就讲到这里,明白了吗?
Donc si je résume, vous avez à votre disposition les nombres entiers et les nombres
总结一下,你们可用的数字有两类:整数和小数。
à virgule. Les nombres entiers, leur précision, elle est.
整数的精度是……
illimitée, leur taille est illimitée, les calculs sont exacts avec,
无限的,大小也是无限的,计算结果完全精确;
vous avez deux divisions à votre disposition, division entière,
你们有两种除法可选:整数除法和小数除法;
division virgule, et vous avez le reste de la division qui est le modulo.
还有取余运算,也就是模运算。
Lorsque, à partir du moment où il y a un point quelque part
只要计算中某处出现小数点,
dans un calcul, l'ensemble du calcul devient un calcul avec des virgules.
整个计算就变成小数运算。
Donc c'est toujours le plus
所以,总是最‘差’的类型起主导作用,
mauvais qui l'emporte, c'est toujours le point,
也就是小数点,
le flottant qui l'emporte dans un calcul.
即浮点数,在计算中占主导地位。
Petite remarque, le flottant
补充一点:浮点数
l'emporte. Toujours sur l'entier.
永远优先于整数。
D'accord, si j'ai un calcul avec plein de nombres
明白了?比如我有一个含多个整数的算式,
entiers et que au milieu de ce truc- là, j'ai un nombre.
而在其中某个位置,我插入了一个数字——
Avec une virgule, mon résultat sera avec une virgule.
带小数点的数字,那么最终结果也会带小数点。
Dès que j'ai basculé en fait dans un nombre flottant, je reste en flottant.
一旦实际转入浮点数运算,就一直保持浮点数形式。
Donc exemple, je sais pas, un calcul
举个例子,比如这个算式:
print 3 fois 5 moins 2 plus 8.
打印 3 乘以 5 减 2 加 8
fois un virgule, j'ai que des nombres entiers sauf ce petit ici qui est un nombre,
乘以一个小数点——所有数都是整数,只有这里这个是小数,
ben là vous voyez que mon résultat est un nombre à virgule.
看,结果就是带小数点的数。
Donc le flottant va contaminer entre guillemets l'entier.
也就是说,浮点数会‘传染’整数。
Il faut s'en rappeler
要记住这一点
pour savoir dans quel ordre par exemple faire les calculs.
例如,以便知道计算的先后顺序。
Précisons, les parenthèses
具体来说,括号
fonctionnent pour les calculs.
在计算中起作用。
Donc là ici en fait je les ai pas mises mais.
所以这里实际上我没加括号,但……
On est comme en maths en fait, ici c'est le 3 fois 5 qui est fait d'abord,
其实和数学一样:先算3乘5,
puis le 8 fois 1, et ensuite après je vais faire 15 moins 2 plus 8.
再算8乘1,最后再算15减2加8。
Et en fait là ici, le plus 8.
而这里的加8,
Comme j'avais un point, c'est devenu un 8.0, un 8 flottant,
因为前面有个小数点,就变成了8.0,一个浮点数,
et c'est ça qui fait que l'ensemble du calcul devient un calcul flottant.
正因如此,整个计算就变成了浮点运算。
Voilà pour les nombres.
关于数字,就讲到这里。