Java Floor函数用于浮动和双值
如何将floor函数应用于float或double值以获得整数。我得到了double值:4.4497083717E10 浮点值:4.4497084E10不在我的函数中。我得到的下限值为double的下限值:4.4497083717E10浮点值的下限值:4.4497084416E10。下限值是否可能导致整数 .地板是否可能导致整数 从类型的角度来看,-no.被声明为返回一个Java Floor函数用于浮动和双值,java,math,Java,Math,如何将floor函数应用于float或double值以获得整数。我得到了double值:4.4497083717E10 浮点值:4.4497084E10不在我的函数中。我得到的下限值为double的下限值:4.4497083717E10浮点值的下限值:4.4497084416E10。下限值是否可能导致整数 .地板是否可能导致整数 从类型的角度来看,-no.被声明为返回一个double,因此永远不会返回静态类型为int的内容 也就是说,该方法的文档声明返回值等于整数。因此,只需将返回的结果强制转换
double
,因此永远不会返回静态类型为int
的内容
也就是说,该方法的文档声明返回值等于整数。因此,只需将返回的结果强制转换为int
,就会得到预期的输出
(也就是说,假设您的结果在范围内。
double
可以容纳int
可以表示的较大数字。请查看技术详细信息。您可能需要检查数据,以确保将其转换为int
始终是明智的)4.4497083717E10太大,无法成为int
,您必须转换为长
对于可以表示为long的值,将其转换为long将保持double的整个部分,使其与Math.floor
相同。i、 e
long l = (long) Math.floor(4.4497083717E10);
与
long l = (long) 4.4497083717E10;
印刷品
2147483647 -- due to an overflow
44497083717
44497083717
您必须在
floor
@MarkoTopolnik之后应用round
为什么要对保证已表示整数的浮点数进行舍入?@ChristianRau,因为您需要long
而这正是round
返回的结果。双精度从不“表示”整数,它只近似于整数。另一种选择,正如安德泽伊·道尔在回答中所解释的那样,是简单地转换成一个长的。结果是完全相同的,不同的只是你的品味和你觉得更干净的东西。我想要的答案是:4表示浮动值下限(4.4497084E10)或双精度(4.44970837E10)。好了——你已经声明了你对演员的偏好:)其他人可能会说“当我看到一个double
被强制变成long
时,我浑身发抖。取整更安全”--但事实上这一切都无关紧要,因为两个操作都发生在同一行代码上。这是取整的实现:(长)地板(a+0.5d)
。是不是有点类似?
2147483647 -- due to an overflow
44497083717
44497083717