如何在C++中区分有理数和无理数

how to differ rational and irrational number in C++

本文关键字:有理数 无理数 中区 C++      更新时间:2023-10-16

如何告诉我的浮点变量存储一个无理数?

我是C的新手++我不知道有多少库函数要实现

我想为每一个最终成为无理数的计算做一个例外

C++没有实现一般的任意精度有理数。可用的数字是大小有限的整数和浮点数字。

然而,浮点数(在常见的IEEE格式中)是一个整数乘以二的精确幂(正或负)。

0.1 = 1/10这样的偶数是不可能精确表示的,因为分母不是二的幂。

所以答案很简单:-)。。。用C++面对的任何数字都是有理的,比一个整数乘以2的幂(可能是负的)还要多。

有实现任意精度整数和有理数的库,但它们不是标准C++的一部分。

默认情况下,C++只能管理有理数。此外,它是

  1. 分子的绝对值不太大
  2. 分母是2的幂,它不太大

当你写

double x = 1.0;
x = x / 10.0;

你得到的结果已经超出了C++语言的能力,因为分母不是二次幂。计算机要做的是将一个近似值存储到x中,因为0.1是一个不能完全以IEEE双格式存储的数字。

浮点数是数字的近似值。在有限的游戏空间内,它是最准确的。

因此,最好的办法是限制两者的影响。它被称为代数。还可以减少舍入误差。