Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spinner increment/decrement precision problem #19

Open
lnyng opened this issue Nov 20, 2015 · 2 comments
Open

Spinner increment/decrement precision problem #19

lnyng opened this issue Nov 20, 2015 · 2 comments

Comments

@lnyng
Copy link

lnyng commented Nov 20, 2015

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:

// @double(min="0.0001", max="5", value="0.0001", persist="false") a
print(a)

I think the problem is that the initial value 0.0001 is somehow rounded down to 0. Since the minimum value is 0.0001, so we are not able to change the value using the spinner.

Similarly, in this code segement:

// @double(min="0.001", max="5", value="0.001", persist="false") a
print(a)

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.

@ctrueden
Copy link
Member

ctrueden commented Oct 16, 2018

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.

@imagejan
Copy link
Member

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...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants