如何在c++中表示无理数

How to represent irrational numbers in c++

本文关键字:表示 无理数 c++      更新时间:2023-10-16

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

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

提前感谢。。。

我认为,实现这种性质的东西的唯一方法是使用标识符,而不是实际的数学或数字表示。即使在纯数学中,由于给定的公设,无理数也被标记为无理数。即使是人类也无法用数字来真正表示无理数。所以我唯一能建议的是,有一个已知无理数的标识符,比如这样的东西:

enum Irrational {
    PI = 0,
    E,
    SQRT2,
    ...
};

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

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

如果在这张地图上找到无理数,那么你对无理数的检查将为真,否则为假。

即使在纯数学中,也不能表示无理数,除非是象征性的(比如Pi,sqrt(2)-你可以说"Pi",但不能在纸上写下它的确切值)。同样的道理也适用于计算机表示——如果你想精确地表示它们,你就不能将它们表示为"实数",只能象征性地表示(在计算机中,即使是有理数也很难精确地表示)。

因此,为了回答您的问题,如上所述,您的数据成员可以是字符串(表示为字符串的符号或整个表达式,如"Pi"或"sqrt(2)")和/或与表达式树组合(用于存储表示无理数的表达式的运算符和操作数,如运算符=sqrt、操作数=2等)。