当前位置: 首页 > 面试题库 >

Java如何测试双精度数是否为整数

宇文峰
2023-03-14
问题内容

是否有可能做到这一点?

double variable;
variable = 5;
/* the below should return true, since 5 is an int. 
if variable were to equal 5.7, then it would return false. */
if(variable == int) {
    //do stuff
}

我知道代码可能不会去这样的事情,但怎么也去了?


问题答案:
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) {
    // integer type
}

这将检查双精度值的四舍五入值是否与双精度值相同。

你的变量可能具有intdouble值,并且Math.floor(variable)始终具有int值,因此,如果你的变量等于,Math.floor(variable)则它必须具有int值。

如果变量的值是无穷大或负无穷大,那么这也不起作用,因此向条件添加“只要变量不是无穷大”。



 类似资料:
  • 问题内容: 我有一些这样的代码: 我基本上希望将来避免除以零的异常。 谢谢 问题答案: 如果未显式初始化,则类范围内的数字基元将初始化为零。 必须显式初始化局部范围内的数字基元(方法中的变量)。 如果您只担心被零例外除,那么检查双精度数是否不 完全 为零非常有用。 否则, 当检查浮点值是否为或时为0时,将使用错误阈值来检测该值是否接近0,但不 完全为 0。

  • 问题内容: 对于此代码块: 的值d就是0.0。它可以通过强制转换来工作: 但是还有另一种方法来获得正确的结果吗?我不喜欢强制转换原语,谁知道会发生什么。 问题答案: 这样可以避免强制转换。但是你会发现强制转换的定义很明确。你不必猜测,只需检查JLS即可。从int到double是一个不断扩大的转换。从第5.1.2节开始:

  • 问题内容: 我的json中有整数,并且我不希望gson将其转换为双精度。以下内容不起作用: 输出不是我想要的: 有没有办法在我的地图中使用整数而不是双精度? 编辑: 不是我所有的字段都是整数。我已经相应地修改了我的示例。我已经在线阅读了很多示例,包括此站点上的一些答案,但在特定情况下不起作用。 问题答案: 1)您必须创建自定义而不是您的问题。 2)我不认为这种行为来自解串器。它更像是json对象/

  • 我试图得到一个double(由两个int的分数得到)作为我下面函数的返回值。 但结果总是错的,我得到的价值如: 预期结果应介于和 我的代码有什么问题! 谢谢

  • 问题内容: 我最初尝试过此方法,但是未为float64定义%运算符。 问题答案: 假设您的数字适合,则可以将浮点值与转换后的整数值进行比较,以查看它们是否相同: 否则,您可以使用此处详述的功能,例如: 那应该在整个领域内工作。

  • 问题内容: 为什么会收到错误,我该如何解决? 如您所见,在声明变量时,我已经尝试过用顶部附近的位置进行替换,但是似乎并没有完成任务。 问题答案: 更改使用数组索引从double到INT所有变量(即变量,,)。数组索引是整数。