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

时间:2013-08-25 14:52:02

标签: c++

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

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

我想为每个最终都是无理数的计算做出例外

2 个答案:

答案 0 :(得分:10)

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

浮点数(采用通用IEEE格式)是一个整数乘以精确的2的幂(正或负)。

偶数0.1 = 1/10之类的数字无法准确表示,因为分母不是2的幂。

所以答案很简单:-) ...你将面对C ++的任何数字都是理性的,而不是整数乘以(可能是负数)2的幂。

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

默认情况下,C ++只能管理有理数。此外,它是理性的一个非常具体的子集

  1. 分子的绝对值不是太大
  2. 分母是2的力量,它不是太大
  3. 写作时

    double x = 1.0;
    x = x / 10.0;
    

    你得到的结果已经超出了C ++语言的能力,因为分母不是2的幂。 计算机将以x的近似值存储,因为0.1它是一个无法以IEEE双格式精确存储的数字。

答案 1 :(得分:0)

浮点数是数字的近似值。尽管它可以在有限的空间内完成,但它是最好的准确。

所以最好的办法是限制两者的效果。它被称为代数。还可以减少轮次错误。

相关问题