Open lnyng opened 8 years ago
Confirmed that this is still a bug. (You may want to use Double
instead of double
during tests as of this writing, due to a separate and probably unrelated bug.) The problem also occurs with 0.0005
, which suggests to me that it is not a decimal-to-binary IEEE floating point conversion issue, either. I am guessing this is some kind of rounding feature of the JSpinner
class...
we are able to increase the value from 0.001 to 1.001, but not going back from 1.001 to 0.001.
Now this bug seems gone. That is: stepping down from 1.001 to 0.001 worked in my tests now.
Interestingly, the value seems to be fine, as it is printed as 1.0E-4
in my tests (in Groovy).
Also, using a slider works fine to change the value:
#@ Double(min=0.0001, max=5.0001, value=0.0001, style=slider, persist=false) a
println a
(Note that I changed max
to 5.0001
to work around another small bug with sliders adjusting to the max-min
range...)
When collecting an input of double type, there might be precision problem using the spin up/down arrows. The code to produce the problem using script editor:
I think the problem is that the initial value
0.0001
is somehow rounded down to 0. Since the minimum value is0.0001
, so we are not able to change the value using the spinner.Similarly, in this code segement:
we are able to increase the value from 0.001 to 1.001, but not going back from 1.001 to 0.001.
Not sure which part of the code cause this rounding error.