注意浮点数的精度问题。
对于一个浮点数 xxx 是否是整数的判断,应使用 fabs(x-round(x))<1e-8。其中 round 不能用 floor 或 ceil 代替,1e-8 不能用 1e-12 等代替,不能使用类似 x==round(x) 的表达。
fabs(x-round(x))<1e-8
round
floor
ceil
1e-8
1e-12
x==round(x)
将一个浮点数 xxx 转化为整数 aaa,应使用 a=round(x)。round 同样不能用 floor 或 ceil 代替,且不能使用 a=x。
a=round(x)
a=x
判断浮点数 xxx 和 yyy 是否相等,应使用 fabs(x-y)<1e-8,同样不能使用 x==y。
fabs(x-y)<1e-8
x==y
本人因这些问题被硬控 333 小时,以此为戒。