一、获取浮点数的整数部分
double x
一般想法是int(x),但是实际上存在浮点误差。
例如:
- (int)(8700*0.94) = 8177;
- 8700*0.94 = 8178;
原因是,在C语言中, 8700 * 0.94 = 8177.999999999999
解决方案是:
- #define eps 1e-6
- 当 x > 0, x = int(x+eps);
- 当 x < 0, x = int(x- eps);
一、获取浮点数的整数部分
double x
一般想法是int(x),但是实际上存在浮点误差。
例如:
- (int)(8700*0.94) = 8177;
- 8700*0.94 = 8178;
原因是,在C语言中, 8700 * 0.94 = 8177.999999999999
解决方案是:
- #define eps 1e-6
- 当 x > 0, x = int(x+eps);
- 当 x < 0, x = int(x- eps);