实数 - 如何确定是否需要浮点数或双精度数?

Soh*_*rty 10 c c++ floating-point

给定一个真实值,我们可以检查float数据类型是否足以存储数字,或者double是否需要?

我知道精度因建筑而异.是否有任何C/C++函数来确定正确的数据类型?

sam*_*hen 3

我认为你的问题预设了一种在不损失精度的情况下向 C / C++ (或任何其他程序)指定任何“实数”的方法。

假设您通过在代码中指定或通过用户输入来获取这个实数;检查浮点型或双精度型是否足以在不损失精度的情况下存储它的一种方法是仅计算有效位的数量,并根据浮点型和双精度型的数据范围进行检查。

如果数字以表达式(即1/7sqrt(2))形式给出,您还需要检测方法:

更重要的是,有一些数字,例如0.9float / double 在理论上不能代表“精确”)至少在我们的二进制计算范例中不能) - 请参阅Jon Skeet 对此的出色回答。

最后,请参阅有关 float 与 double 的其他讨论。