如何用c ++表示无理数

时间:2015-12-12 14:11:51

标签: c++

我想用C ++中的类来表示所有无理数。

我该怎么做?什么假设是我的数据成员和功能?

提前感谢...

2 个答案:

答案 0 :(得分:0)

即使在纯数学中也不能代表无理数,除了符号(如Pi,sqrt(2) - 你可以说“Pi”但你不能在纸上写出它的确切值)。这同样适用于计算机表示 - 如果你想要准确地表示它们,你不能将它们表示为“真实”数字,只能象征性地表示(在计算机中它实际上很难准确地表示有理数)。

所以,回答你的问题 - 由于上述原因,你的数据成员可能是例如字符串(符号或整个表达式表示为字符串,如“Pi”或“sqrt(2)”)和/或组合表达式树(运算符和操作数,用于存储表示无理数的表达式,如operator = sqrt,operand = 2等)。

答案 1 :(得分:0)

我认为你可以实现这种性质的唯一方式是使用标识符,而不是实际的数学或数字表示。即使在纯数学中,由于给定的假设,非理性数被标记为非理性。即使是人类也无法用数字真正代表无理数。因此,我唯一可以建议的是拥有已知无理数的标识符,例如:

enum Irrational {
    PI = 0,
    E,
    SQRT2,

    ...

};

然后你可能想要将它们与这样的地图联系起来:

std::map<Irrational, double> myIrrationals;
myIrrations.insert( std::make_pair<Irrational, double>( PI, 3.141592654 ) );

然后,如果在此地图中找到无理数,则检查无理数,否则为false。