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

在Java中将double转换为整数

戚哲
2023-03-14
问题内容

在Java中,我想将双精度型转换为整数,我知道您是否这样做:

double x = 1.5;
int y = (int)x;

您得到y = 1。如果您这样做:

int y = (int)Math.round(x);

您可能会得到2。但是,我想知道:由于整数的双精度表示有时看起来像1.9999999998之类,所以通过Math.round()创建的双精度转换是否仍会导致截断的向下数字,而不是比我们要查找的舍入数(即:1而不是所示代码中的2)?

(是的,我的确这样表示:x 是否有 任何 值,其中y将显示x的截断而不是舍入的结果?)

如果是这样:是否有更好的方法将双精度数舍入为舍入型整数而不冒被截断的风险?

找到了一些东西:Math.round(x)返回一个long,而不是double。因此:Math.round()无法返回看起来像3.9999998的数字。因此,int(Math.round())无需截断任何内容,并且将始终有效。


问题答案:

是否有可能铸造通过创建的双精度孔Math.round()仍将导致截短的倒数

不,round()将始终将您的double取整到正确的值,然后将其强制转换为long,以截断任何小数位。但四舍五入后,将没有剩余的小数部分。

以下是来自的文档Math.round(double)

返回最接近参数的long。通过将结果加1/2,将结果取底,并将结果强制转换为long类型,将结果舍入为整数。换句话说,结果等于表达式的值:

(long)Math.floor(a + 0.5d)


 类似资料:
  • 问题内容: 我怎么能转换,如一个在Java中? 问题答案: 你可以使用将转换为: 对于你的情况,看起来像你想要的:

  • 本文向大家介绍在Java中将Double转换为Integer,包括了在Java中将Double转换为Integer的使用技巧和注意事项,需要的朋友参考一下 首先,初始化一个double值- 现在,使用intValue()方法将Double转换为Integer值- 示例 以下是在Java中将Double转换为Integer的程序- 输出结果

  • 问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon

  • 问题内容: 我面临与转换为相关的问题。实际上,我将浮点类型存储在数据库中,但是当我们通过下面的代码从数据库中获取数据时,它是类型。我们获得的价值以表格的形式出现。 那么我们如何获得像这样的格式数据呢? 问题答案: 只需将您的双曲投向花车即可。 还要注意,基本类型不能存储无限的数字集:

  • 问题内容: 我们如何在Java中转换成?我有一个要求,我们必须使用Double作为参数,但是我们越来越明白了,所以我必须转换成。 问题答案: 您需要使用该方法从BigDecimal对象获取double值。

  • 问题内容: 我正在生成双精度类型的数字序列,如0.9913963644564902 0.0341175990344773 0.13181105852355268 0.45773616980747556,我必须将其转换为Java中的二进制表示形式。 问题答案: 这将为您提供帮助。我已经尝试使用您输入的双精度值之一-0.9913963644564902 输出将是