当前位置: 首页 > 知识库问答 >
问题:

JAVA中从double到long的类型转换[重复]

西门威
2023-03-14
class test{
public static void main(String... args){
    double d=5.637;
    System.out.println("double is:"+d);
    long a=(long)d;
    System.out.println("long is:"+a);
   }
}

上面代码的输出是long is:5,这是预期的。

class test{
public static void main(String... args){
     double d=12345678901234567890.637;
     System.out.println("double is:"+d);
     long a=(long)d;
     System.out.println("long is:"+a);
  }
}

共有1个答案

法烨烨
2023-03-14

为了最安全的强制转换,您应该使用math.round(d),最大长大小为9,223,372,036,854,775,807您正在尝试将更大的双倍值设置为long

编辑:您可以使用BigInteger而不是Long

 类似资料:
  • 考虑此代码段: 在我的机器上运行这个会打印两个转换的。但是和只能是吗? 据我所知,这是一个扩展的原语转换,规范中说: 拓宽的基元转换不会丢失有关数值的整体大小的信息。 以及 将int或long值加宽为float或将long值加宽为double可能会导致精度损失 据我所知,上述规范意味着将始终成为,但可以转换为其他内容(例如或类似内容)。我的规格解释正确吗?

  • 我希望输入一个和另一个ex: 1和1000000000,现在我希望创建一个大小为1000000000的数组。然后在数组的每个索引处,存储int val,ex:。 当我尝试执行此操作时,Netbeans 会向我显示此行中的错误: “可能从long到int的有损转换”。这是我的密码:-

  • 目前,我正在使用链表,但是我有一个代码问题。下面的代码运行正常,但是当我试图用a添加一些节点来生成随机数时,它给了我这个错误。在为代码添加之前,运行添加,现在您可以在main中看到。也许我错过了什么。有人能帮我理解一下吗? 附言:评论部分是我试图“升级”的主要部分。

  • 问题内容: 如果我正在使用,并将其转换为,则该如何正确工作?值会被截断以适合浮点数吗?还是舍入值不同?抱歉,这听起来有点补救,但是我正在尝试掌握和转换的概念。 问题答案: 根据 Java语言规范的 第5.1.3节 : 从double到float的原始转换变窄由IEEE 754舍入规则(第4.2.4节)控制。这种转换可能会失去精度,但也会失去范围,导致非零双精度浮点为零,而有限双精度浮点为无穷大。双

  • 问题内容: 我需要将格式为“ dd / mm / yyyy”的字符串转换为长型。为了将值传递给android中的calendarProvider。 目前我有: 我需要: 我已经尝试过使用SimpleDateFormat,但是在获取正确的类型时遇到了问题。任何帮助将非常感激。 问题答案: 您可以使用以下代码从字符串日期中以“ dd / mm / yyyy”格式获取长值(自格林尼治标准时间1970年1