round函数在各语言中的差别

1 Math.round(-1.5) 结果是 -1 还是 -2

记得前几年做java面试题的时候遇到求 Math.round(-1.5) 值的问题,今天在看JavaScript关于math函数的时候,特意去比较了下这两种语言四舍五入的结果。得出结果后仍意犹未尽,就把python,c,matlab也拿出来比较了一下。

2 目标

求负数四舍五入后的结果

3 java

1
2
3
4
5
6
7
public class mytest {
public static void main(String[] args){
System.out.println(Math.round(-1.4));// -1
System.out.println(Math.round(-1.5));// -1
System.out.println(Math.round(-1.6));// -2
}
}

4 JavaScript

1
2
3
console.log(Math.round(-1.4)); //   -1
console.log(Math.round(-1.5)); // -1
console.log(Math.round(-1.6)); // -2

5 c/c++

1
2
3
4
5
6
7
#include <stdio.h>
#include <math.h>
int main(){
printf("%f \n",round(-1.4));// -1.000000
printf("%f \n",round(-1.5));// -2.000000
printf("%f \n",round(-1.6));// -2.000000
}

6 python

1
2
3
print(round(-1.4))# -1
print(round(-1.5))# -2
print(round(-1.6))# -2

7 matlab

1
2
3
disp(round(-1.4));% -1 
disp(round(-1.5));% -2
disp(round(-1.6));% -2

8 结论:

  1. java/JavaScript -1.5 四舍五入都为 -1.
  2. c/c++/python/matlab -1.5 四舍五入结果都为 -2.

不同语言关于负数中‘’的理解并不统一。