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