【发布时间】:2015-06-23 15:46:40
【问题描述】:
有代码
public static final float epsilon = 0.00000001f;
public static final float a [] = {
-180.0f,
-180.0f + epsilon * 2,
-epsilon * 2
}
a 初始化如下:
[-180.0, -180.0, -2.0E-8]
而不是想要的
[-180.0, X, Y]
如何调整epsilon 以达到预期的效果? --
1) 我希望 float 而不是 double 与之前编写的代码保持一致
2) 我不想要-179.99999998 或X 的任何其他特定数字,我想要X > -180.0 但X 尽可能接近-180.0
3) 我希望Y 尽可能接近0,但要做到float
4) 我要-180.0 < X < Y
在我最初的帖子中,我没有具体说明我想要什么。 Patricia Shanahan 通过建议 Math.ulp
【问题讨论】:
-
您是否尝试过查阅 java 文档以了解支持的最大精度?如果这是您的问题的全部原因,使用
double可以让您获得更高的精度.... -
改用
double? -179.99999998 超出了float的精度。 -
你想要什么结果?
-
@tmyklebu 我已经指定了我需要的内容。
标签: java floating-point floating-accuracy