惊了! Python 居然可以计算任意长度的整数

2022-09-14 03:15:25 +08:00
 threebr

刷一个算法题,需要进行 30000 长度范围内( 1e30000 )的整数运算,我寻思难不成还要我自己实现一个大数的加减乘除?结果 python 居然自带这个功能。从 c 语言入门计算机的我甚至都不敢这么想。下面是例子:

运行代码: a=10000000000000004321000000000000000001234433 b = a//2 print(b)

得到输出: 5000000000000002160500000000000000000617216

5810 次点击
所在节点    Python
32 条回复
Perry
2022-09-14 04:10:13 +08:00
> There is no limit for the length of integer literals apart from what can be stored in available memory.

https://docs.python.org/3/reference/lexical_analysis.html#integer-literals
kennylam777
2022-09-14 05:24:14 +08:00
所以 Python 是數學運算及金融計算的首選, 先把算法寫好不用考慮電腦元件的運作方式
leimao
2022-09-14 07:47:18 +08:00
。。。这个是 Python 一个很著名的 feature
thinkershare
2022-09-14 07:55:26 +08:00
现在是 2022 年了, JavaScript 一样支持任意长度的整数, 顺便说一下, 并不是任意长度, 有内存限制的
ColorfulBoar
2022-09-14 07:56:42 +08:00
有没有可能……这个算法题……就是让你练习手写大数运算的?
SingeeKing
2022-09-14 08:47:34 +08:00
@thinkershare 不支持; js 只是浮点数而已,和 Python 完全不一样
fgwmlhdkkkw
2022-09-14 09:08:53 +08:00
@SingeeKing Bigint
lysS
2022-09-14 09:53:05 +08:00
厉害吗?
性能换的
lakehylia
2022-09-14 09:53:40 +08:00
java 也有 BigInt
lysS
2022-09-14 09:54:48 +08:00
@kennylam777 #2 其他语言都有 big numbers 吧?
thinkershare
2022-09-14 09:58:14 +08:00
@lysS 2022 年不支持 big int 的语言才是少数, 主要是这个玩意性能差的要死. 特别是 Python 3 还合并了普通的 int 和 long, 反正 python 中所有的方便之处都是靠巨大性能代价换来的, 导致很多人写出来的 python 代码已经没救了, 因为到处都是性能的坑, 随便写一下就是 O(n)以上的复杂度,
MoYi123
2022-09-14 09:59:42 +08:00
@thinkershare 时间复杂度和编程语言有什么关系?
laqow
2022-09-14 10:03:51 +08:00
@kennylam777 大概仅限的原生 python 函数,统计的事还是得 R 和 matlab 。numpy 一个 type 写错翻车的地方都找不到。
Bovmelo
2022-09-14 10:26:26 +08:00
@MoYi123 随便一个 tuple 你知道里面怎么实现的吗?
dcsuibian
2022-09-14 10:33:04 +08:00
坐下,高级语言常规操作
Jirajine
2022-09-14 10:39:54 +08:00
@thinkershare big decimal literal 怎么就影响性能了。Python 性能最让人诟病的地方是 GIL ,为了简单方便的 c API 而牺牲性能。你要说复杂度 js 更差,没有专门的 iterator ,数组的 map/filter 等函数都是非 lazy 的。
DOLLOR
2022-09-14 10:41:18 +08:00
@SingeeKing
JS 已经内置 BigInt 了
zthxxx
2022-09-14 10:57:05 +08:00
@SingeeKing 各语言都有写法或类型上的支持的,包括 js

lysS
2022-09-14 12:21:41 +08:00
@thinkershare #11 我是说以一个包或者库函数之类的方式支持
dqzcwxb
2022-09-14 14:13:23 +08:00
这难道不是语言最基本的吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX