Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有库函数将数字舍入到无穷大(即远离0)_Java_Math - Fatal编程技术网

Java 是否有库函数将数字舍入到无穷大(即远离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

我需要一个舍入函数,当输入为正时返回一个较大的整数,当输入为负时返回一个较小的数字,即除非输入实际为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和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))
是一个更短、更便宜的选择。