如何检查一个巨大的浮点数是否为整数
How to check whether a huge floating point number is an integer?
我有一个非常大的浮点数(大约20位),我想检查它是否是整数。例如,如果我有一个像154.0这样的数字,那么它是一个整数,而154.123123不是整数。
我需要检查非常大的浮点数(20位或更多),这意味着我不能首先将其转换为long long数据类型,看看它们是否相同。请把我推到正确的方向。我将欣赏答案只在C/c++。谢谢你!:)
什么是"huge"?如果这个数非常大,位数的数量大于浮点数尾数所能表示的数字,那么这个浮点数总是一个整数。
例如,IEEE 754双精度格式有一个52位尾数,足以表示大约16位十进制数字。如果你的数字有20个十进制数字,那么任何将这些数字挤进double
的尝试都会导致四舍五入,有效地将你的数字变成"整数"。
您提到您的数字太大,无法容纳long long
数据类型。如果你指的是64位long long
数据类型,那么它自动意味着你的数字太大了,以至于当用典型的double
类型表示时,它们永远不会有任何小数部分,即如果用double
值表示,它们将永远是"整数"。
注:您是否正在使用具有超宽尾数的外来浮点类型?
测试x == floor(x)
?
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 为什么将两个浮点数相加会得到一个整数C++?
- 浮点数中整数的精确表示形式
- 浮点到整数转换出错(即使浮点数已经是整数)
- 将整数的二进制数据转换为浮点数
- 当我们C++将两个数组的整数除以 时,如何获得浮点数计算;
- C++整数除法到浮点数
- 整数浮点数除以自身是否保证为 1.f?
- 如何使用 c++ 模板实现整数、字符串、浮点数和日期对象的数组
- 根据浮点数选择最小整数类型
- 如何将 Q 格式的整数转换为浮点数(反之亦然)
- 解析文本文件中的字符串、整数和浮点数
- 正则表达式浮点数和不带逗号的整数
- 如何在不使用对象的情况下连接字符串、整数和浮点数
- 将 32 位浮点数和不强制转换的 32 位整数与双精度进行比较,当其中一个值可能太大而无法完全适合另一种类型时
- 结构中的整数、字符和浮点数
- 为什么我的函数返回一个整数,尽管我已经将答案指定为浮点数
- 给定一个整数 M,使得 (int)C < M 的最大浮点数 C 是多少?