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