Hello I need to do some floating point arithmetic in java as shown in the code below:
public class TestMain {
private static Map<Integer, Double> ccc = new HashMap<Integer, Double>() {
{
put(1, 0.01);
put(2, 0.02);
put(3, 0.05);
put(4, 0.1);
put(6, 0.2);
put(10, 0.5);
put(20, 1.0);
put(30, 2.0);
put(50, 5.0);
put(100, 10.0);
}
};
Double increment(Double i, boolean up) {
Double inc = null;
while (inc == null) {
inc = ccc.get(i.intValue());
if (up)
--i;
else
++i;
}
return inc;
}
public static void main(String[] args) {
TestMain tt = new TestMain();
for (double i = 1; i < 1000; i += tt.increment(i, true)) {
System.out.print(i + ",");
}
}
}
This is to simulate the range of values outputed by the Betfair spinner widget...
http://help.betfair.com/contents/itemId/i65767327/index.en.html
Floating point arithmetic in Java seems to introduce some unexpected errors. For example, I get 2.180000000000001 instead of 2.18
Anybody know how I can get round this issue.
What use are floating point numbers is you can't trust the results of arithmetic performed on them?
Thanks