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

Anu*_*rma 2 c c++ floating-point type-conversion

我有一个非常大的浮点数(大约20位),我想检查它是否是一个整数.例如,如果我有一个像154.0的数字那么它是一个整数,而154.123123不是一个整数.

我需要检查非常大的浮点数(20位或更多),这意味着我不能先将它转换为long long数据类型,看看它们是否相同.请把我推向正确的方向.我只会欣赏C/C++中的答案.谢谢!:)

AnT*_*AnT 16

嗯,什么是"巨大的"?如果数字在某种意义上是巨大的,即数字的位数大于浮点数的尾数所代表的数字,那么浮点数总是一个整数.

例如,IEEE 754双精度格式具有52位尾数,足以容纳约16个十进制数字.如果你的数字有20个十进制数字,那么任何将这些数字压缩成a的尝试double都会导致舍入,从而有效地将你的数字变成"整数".

你提到你的数字太大而不适合long long数据类型.如果您指的是64位long long数据类型,那么它会自动表示您的数字太大,以至于当用典型double类型表示时它们将永远不会有任何小数部分,即如果用double值表示它们将始终为"整数" .

PS你是否正在使用一些带有超宽尾数的异域浮点型?