有没有办法让Python在64位机器上强制将所有浮点数视为32位?

1 投票
3 回答
609 浏览
提问于 2025-04-17 06:05

有没有办法让我在64位的机器上,让Python明确把所有的浮点数都当作32位的来处理呢?

我不想修改代码……

3 个回答

1

http://docs.python.org/tutorial/floatingpoint.html

现在几乎所有的计算机(截至2010年7月)都使用一种叫做IEEE-754的浮点运算方式,几乎所有的平台都把Python中的浮点数映射到IEEE-754的“双精度”格式。754双精度格式有53位的精度,所以当你输入0.1时,计算机会尽量把它转换成最接近的分数,形式是J/2**N,其中J是一个包含正好53位的整数。

在64位和32位的机器上,你会发现浮点数的大小是一样的,而且这两种机器上的浮点数都不会是32位。

如果你一定需要32位的浮点数,你可以使用一个虚拟机来运行一个使用32位浮点数的Python版本(不过我不知道是否有这样的版本),或者自己编译一个(我也不知道怎么做)。

你应该可以在32位的机器上使用64位的Python版本,虽然这不会改变浮点数的工作方式。我觉得32位和64位Python之间的主要区别在于内存使用——64位可以使用更多的内存,但它也更“吃”内存。

1

浮点数的大小是在编译时就确定下来的。你可以在编译时选择一个选项,让C语言中的double类型在新的Python可执行文件中被当作float类型来处理。

3

Python里的 float 是内置的,已经固定了,你不能去改变它。如果你需要不同的浮点数类型,可以使用来自numpy库的 float32

撰写回答