Python Java 中的样式 round()
Python style round() in Java
我发现 Python 中的内置 round()
函数与 Java 的 java.lang.Math.round()
函数之间存在差异。
在Python中我们看到..
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> round(0.0)
0.0
>>> round(0.5)
1.0
>>> round(-0.5)
-1.0
并且在Java..
System.out.println("a: " + Math.round(0.0));
System.out.println("b: " + Math.round(0.5));
System.out.println("c: " + Math.round(-0.5));
a: 0
b: 1
c: 0
看起来 Java 总是 向上舍入 而 Python 向下舍入 负数。
在 Java 中获得 Python 样式舍入行为的最佳方法是什么?
你或许可以试试:
float a = -0.5;
signum(a)*round(abs(a));
一种可能的方式:
public static long symmetricRound( double d ) {
return d < 0 ? - Math.round( -d ) : Math.round( d );
}
如果数字为负数,将其正值四舍五入,然后取反。如果它是正数或零,只需按原样使用 Math.round()
。
自己做圆法:
public static double round(double n) {
if (n < 0) {
return -1 * Math.round(-1 * n);
}
if (n >= 0) {
return Math.round(n);
}
}
Python 和 java 中的 round() 函数完全不同。
在java中,我们使用正常的数学计算将值四舍五入
import java.lang.*;
public class HelloWorld{
public static void main(String []args){
System.out.println(Math.round(0.5));
System.out.println(Math.round(1.5));
System.out.println(Math.round(-0.5));
System.out.println(Math.round(-1.5));
System.out.println(Math.round(4.5));
System.out.println(Math.round(3.5));
}
}
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
1
2
0
-1
5
4
但在 Python 中,对于奇数,答案会四舍五入为偶数,而当数字为偶数时,则不会进行四舍五入。
>>> round(0.5)
0
>>> round(1.5)
2
>>> round(-0.5)
0
>>> round(-1.5)
-2
>>> round(4.5)
4
>>> round(3.5)
4
我发现 Python 中的内置 round()
函数与 Java 的 java.lang.Math.round()
函数之间存在差异。
在Python中我们看到..
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> round(0.0)
0.0
>>> round(0.5)
1.0
>>> round(-0.5)
-1.0
并且在Java..
System.out.println("a: " + Math.round(0.0));
System.out.println("b: " + Math.round(0.5));
System.out.println("c: " + Math.round(-0.5));
a: 0
b: 1
c: 0
看起来 Java 总是 向上舍入 而 Python 向下舍入 负数。
在 Java 中获得 Python 样式舍入行为的最佳方法是什么?
你或许可以试试:
float a = -0.5;
signum(a)*round(abs(a));
一种可能的方式:
public static long symmetricRound( double d ) {
return d < 0 ? - Math.round( -d ) : Math.round( d );
}
如果数字为负数,将其正值四舍五入,然后取反。如果它是正数或零,只需按原样使用 Math.round()
。
自己做圆法:
public static double round(double n) {
if (n < 0) {
return -1 * Math.round(-1 * n);
}
if (n >= 0) {
return Math.round(n);
}
}
Python 和 java 中的 round() 函数完全不同。
在java中,我们使用正常的数学计算将值四舍五入
import java.lang.*;
public class HelloWorld{
public static void main(String []args){
System.out.println(Math.round(0.5));
System.out.println(Math.round(1.5));
System.out.println(Math.round(-0.5));
System.out.println(Math.round(-1.5));
System.out.println(Math.round(4.5));
System.out.println(Math.round(3.5));
}
}
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
1
2
0
-1
5
4
但在 Python 中,对于奇数,答案会四舍五入为偶数,而当数字为偶数时,则不会进行四舍五入。
>>> round(0.5)
0
>>> round(1.5)
2
>>> round(-0.5)
0
>>> round(-1.5)
-2
>>> round(4.5)
4
>>> round(3.5)
4