floor函数浮动和double值

时间:2012-04-20 09:32:24

标签: java math

如何将floor函数应用于float或double值以获取integer.I得到double值:4.4497083717E10 浮点值:4.4497084E10我的函数。我得到的楼层值为楼层的双倍:4.4497083717E10楼层浮动:4.4497084416E10。楼层是否有可能产生整数??

2 个答案:

答案 0 :(得分:4)

  

。楼层是否有可能导致整数??

从类型的角度来看 - 没有。 Math.floor被声明为返回double,因此永远不会返回静态类型为int的内容。

也就是说,该方法的文档声明返回的值等于整数。因此,简单地将返回的结果转换为int将始终为您提供所期望的输出。

(也就是说,假设您的结果在范围内。double可以包含int可以代表的更大数字。请查看Narrowing primitive conversions以获取技术详情。您可能希望边界 - 检查您的数据,以确保转换为int始终是明智的。)

答案 1 :(得分:1)

4.4497083717E10太大而不能成为int,您必须投放到long

转换为long会保留double的整个部分,使其与Math.floor相同,以表示可以表示为long的值。即。

long l = (long) Math.floor(4.4497083717E10);

相同
long l = (long) 4.4497083717E10;

System.out.println((int) Math.floor(4.4497083717E10));
System.out.println((long) Math.floor(4.4497083717E10));
System.out.println((long) 4.4497083717E10);

打印

2147483647   -- due to an overflow
44497083717
44497083717
相关问题