zeropointone Posted February 5, 2014 Posted February 5, 2014 $Variable = 4.1 $Variable -= 4 MsgBox(0, "", $Variable) When I run the above code, I see the number 0.0999999999999996. I'm running the lastest version of autoit. What am I doing wrong? Or, if it's a bug, is there a workaround?
somdcomputerguy Posted February 5, 2014 Posted February 5, 2014 (edited) Hmm. Try this.. $Variable = 4.1 $Variable -= 4 MsgBox(0, "", Ceiling($Variable)) Edited February 5, 2014 by somdcomputerguy - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
Moderators Melba23 Posted February 5, 2014 Moderators Posted February 5, 2014 (edited) zeropointone,It is not a bug - at least not in Autoit as it affects all computers. Google "floating point arithmetic" and you will learn more than you wish or need to know. M23Edit: Welcome to the forum, by the way. Edited February 5, 2014 by Melba23 BinaryBrother 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
zeropointone Posted February 5, 2014 Author Posted February 5, 2014 Oh, that makes sense. I just ran the equivalent code with a float in C++, and sure enough the same thing happened! The solution I'm using is: $Variable = 4.1 $Variable -= 4 $Variable = Round($Variable, 1) somdcomputerguy - Ceiling() is no good in this case, as it returns a whole number. Thanks for the help!
somdcomputerguy Posted February 6, 2014 Posted February 6, 2014 somdcomputerguy - Ceiling() is no good in this case, as it returns a whole number. Oops..$Variable = 4.1 $Variable -= 4 MsgBox(0, "", "." & Ceiling($Variable)) - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
Moderators JLogan3o13 Posted February 6, 2014 Moderators Posted February 6, 2014 Ceiling is still not the right function to use. It is returning the whole number 1, not .1; just because a period is placed in front of it doesn't mean it returns what it should. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
somdcomputerguy Posted February 6, 2014 Posted February 6, 2014 .. just because a period is placed in front of it doesn't mean it returns what it should. I realize that, I was just being sortof a smartass.. - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now