Java 是否有库函数将数字舍入到无穷大(即远离0)
我需要一个舍入函数,当输入为正时返回一个较大的整数,当输入为负时返回一个较小的数字,即除非输入实际为0.0,否则它不应返回0 示例:Java 是否有库函数将数字舍入到无穷大(即远离0),java,math,Java,Math,我需要一个舍入函数,当输入为正时返回一个较大的整数,当输入为负时返回一个较小的数字,即除非输入实际为0.0,否则它不应返回0 示例: f(0.1) = 1 f(-0.1) = -1 f(0.0) = 0 (函数总是向上取整,因此Math.ceil(-0.1)=0怎么样 rounded = Math.ceil(Math.abs(toBeRounded)) * Math.signum(toBeRounded); 将数字的绝对值向上舍入,然后重新应用符号。另一种方法是根据需要使用ceil和floo
f(0.1) = 1
f(-0.1) = -1
f(0.0) = 0
(函数总是向上取整,因此Math.ceil(-0.1)=0
怎么样
rounded = Math.ceil(Math.abs(toBeRounded)) * Math.signum(toBeRounded);
将数字的绝对值向上舍入,然后重新应用符号。另一种方法是根据需要使用ceil和floor
double roundToInfinity = x < 0 ? Math.floor(x) : Math.ceil(x);
double roundToInfinity=x<0?数学地板(x):数学天花板(x);
注意:-0.0也将四舍五入为0为什么不是最简单的方法?如果x>0 Math.ceil,如果x=0->0,则为else Math.floor?@AndrzejBobak这就是我现在正在做的,但是在floor的情况下,不太清楚实际得到的数字是否会比“floor”小绝对值。比我当前的解决方案好得多。谢谢!
(int)(Math.copySign(Math.ceil(Math.abs(num)),num))
是一个更短、更便宜的选择。