![]() |
1
2
Python将始终显示复数的虚部,因为否则您无法从输出中区分它确实是复杂的。这类似于包括
实际零件在不完全为+0时显示。在您给出的示例中,显示真实零件是因为它是负零。请注意,在浮点中,负零和正零具有不同的表示形式,即使它们比较相等:
这对于模拟Python的输出可能没有多大帮助,因为您可能无法轻松预测Python何时会得到负0的结果。例如:
加法将实部归一化为+0
与正虚数相乘会保留实部的负号,但与负虚数相乘不会使实部为负。 但所有这些都只是实现细节,因此不同的Python实现可能会有所不同。 浮点有两个独立的正负零表示,这是IEEE 754浮点实现的一个细节。看见 https://en.wikipedia.org/wiki/Signed_zero 检测是否输出真实部分的源代码部分包括:
第一部分适用于两种形式的零。只有当真实部分不是负数时,第二部分才是真的(
|
![]() |
2
2
如果要实现另一个程序来精确复制CPython解释器的当前行为,可以研究复数表示的源代码:
一些血淋淋的细节可以在函数中找到
我不认为浮点数的精确交互式输出是官方Python语言规范的一部分,所以这里的源代码可能是最好的指南。 编辑:如果你不想重新发明轮子,那么可能是时候研究一下了 embedding Python in another application . |
![]() |
Siddharth · 复制Python的复数到字符串转换 7 年前 |
![]() |
GabrielT · 检索列表中存储为字符串的复数的实部和虚部 7 年前 |
![]() |
haster8558 · 过载问题 7 年前 |
![]() |
KQS · 将函数模板中的一个类型名映射到另一个类型名 7 年前 |
|
user8589267 · 我的equals方法有什么问题? 7 年前 |
![]() |
NSZ · 类型转换c++,quadmath 7 年前 |