为什么在C ++中没有指定复杂的整数?

时间:2014-11-05 20:54:13

标签: c++ int complextype

这个问题已在这里得到解答:

Why does C++ mandate that complex only be instantiated for float, double, or long double?

但是,我看不出那里的答案是否有效。公认的理由是:

  

您无法正确实现许多std :: complex操作   整数。如,

     

模板   T abs(const complex& z);

     

复杂的   不能有T =长回报值......

但是,我没有看到任何原因。

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

有人可以提出任何关于为什么没有复杂整数的想法吗?

1 个答案:

答案 0 :(得分:-1)

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