如何检查一个巨大的浮点数是否为整数

How to check whether a huge floating point number is an integer?

本文关键字:浮点数 整数 巨大 是否 何检查 检查 一个      更新时间:2023-10-16

我有一个非常大的浮点数(大约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) ?