为什么C++中没有指定复数整数

  • 本文关键字:整数 C++ c++ int complextype
  • 更新时间 :
  • 英文 :


这个问题已经在这里得到了回答:

为什么C++强制要求该复合体只能实例化为float、double或long double?

然而,我看不出那里的答案是如何有效的。公认的原因是:

您无法正确实现上的许多std::复杂操作整数。例如,

模板T abs(const complex&z);

对于综合体不能有T=长返回值。。。

然而,我看不出有什么理由不这样做。

例如,如果我有1234567 + 7654321i,那么abs()大约是7753243.557。诸如7753243或7753244之类的整数结果可能非常有用。给出哪种结果并不重要,只要机制是一致的。(就像我们接受5/3=1一样)。

有人能提供一些关于为什么复数整数不可用的想法吗?

在数学术语中,复数的绝对值是其分量平方和的平方根。这意味着只有在非常罕见的情况下,如3 + 4i,绝对值才会是整数(本例为5)。如果您希望绝对值与模板参数的类型相同,那么您就是SOL。

最新更新