从其它平台迁移而来
人到中年,总是不免生出些危机感,长年使用Delphi
,心中自是不踏实,闲来便看两眼java
,不想却发现个从未注意过的小问题。
1
2
3
4
5
|
double a = 1 / 10; //0.0
double b = 1.0 / 10; //0.1
double c = 1 / 10.0; //0.1
double d = 1 - 9.0 / 10; //0.09999999999999998
double e = 1 - 9 / 10; //1.0
|
1
2
3
4
5
|
a := 1 / 10; //0.1
b := 1.0 / 10; //0.1
c := 1 / 10.0; //0.1
d := 1 - 9.0 / 10; //0.1
e := 1 - 9 / 10; //0.1
|
1
2
3
4
5
|
a := 1 / 10 //0
b := 1.0 / 10 //0.1
c := 1 / 10.0 //0.1
d := 1 - 9.0/10 //0.1
e := 1 - 9/10 //1
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//.Net Framework
double a = 1 / 10; //0
double b = 1.0 / 10; //0.1
double c = 1 / 10.0; //0.1
double d = 1 - 9.0 / 10; //0.1
double e = 1 - 9 / 10; //1
//.NET Core
double a = 1 / 10; //0
double b = 1.0 / 10; //0.1
double c = 1 / 10.0; //0.1
double d = 1 - 9.0 / 10; //0.09999999999999998
double e = 1 - 9 / 10; //1
|
1
2
3
4
5
|
a = 1 / 10; //0.1
b = 1.0 / 10; //0.1
c = 1 / 10.0; //0.1
d = 1 - 9.0 / 10; //0.09999999999999998
e = 1 - 9 / 10; //0.09999999999999998
|
从以上可看出:
-
Delphi
和python 3
,整数/整数=浮点数;java
、Go
、C#
,整数/整数=整数。
-
Delphi
、Go
、C#(.Net Framework)
比java
、C#(.NET Core)
、python 3
的浮点数精度要高。
-
Delphi
按自然认知书写即可;Go
、C#(.Net Framework)
需要注意一下书写语法;python 3
浮点数做比较时要做下特殊处理才行;java
、C#(.NET Core)
不仅要注意书写语法,比较时还要做特殊处理。
综合精度和方便度来看,Delphi
才是王者,Go
、C#(.Net Framework)
次之,python 3
再次,java
、C#(.NET Core)
末之。
哈哈,Delphi
依然宝刀未老啊!