如何在C++中区分有理数和无理数
how to differ rational and irrational number in C++
如何告诉我的浮点变量存储一个无理数?
我是C的新手++我不知道有多少库函数要实现
我想为每一个最终成为无理数的计算做一个例外
C++没有实现一般的任意精度有理数。可用的数字是大小有限的整数和浮点数字。
然而,浮点数(在常见的IEEE格式中)是一个整数乘以二的精确幂(正或负)。
像0.1 = 1/10
这样的偶数是不可能精确表示的,因为分母不是二的幂。
所以答案很简单:-)。。。用C++面对的任何数字都是有理的,比一个整数乘以2的幂(可能是负的)还要多。
有实现任意精度整数和有理数的库,但它们不是标准C++的一部分。
默认情况下,C++只能管理有理数。此外,它是
- 分子的绝对值不太大
- 分母是2的幂,它不太大
当你写
double x = 1.0;
x = x / 10.0;
你得到的结果已经超出了C++语言的能力,因为分母不是二次幂。计算机要做的是将一个近似值存储到x
中,因为0.1
是一个不能完全以IEEE双格式存储的数字。
浮点数是数字的近似值。在有限的游戏空间内,它是最准确的。
因此,最好的办法是限制两者的影响。它被称为代数。还可以减少舍入误差。