Jump to content

[solved]Problem with calculations with negative numbers taken from text file


vulcan4d
 Share

Recommended Posts

EDIT: this has been solved and was an issue with the negative character.  See the reply below.

 

I'm having an issue with AutoIT unable to make proper calculations when extracting the numbers from a text file.  Granted these come in as string but I thought using the Number() command would resolve it.  I'll paste the script code that is relevant but here is what I'm doing:

-Two text files exist (filecurrent, fileprevious), they have the same information in the exact same place however the value amounts can be different.

-All I need to figure out is whether each value increases or decreases. 

So far the outcome is all over the place and is only valid when the numbers are positive.  If they are negative it is either inverse or tells me the values are the same when they are actually not.

 

The code below simply imports both files into arrays called $cArray and $pArray

    FileOpen($filecurrent, 0)
    _FileReadToArray($filecurrent,$cArray)
    FileClose($filecurrent)
    FileOpen($fileprevious, 0)
    _FileReadToArray($fileprevious,$pArray)
    FileClose($fileprevious)

The code below calls the function to extract the value from the Array.  I'll spare you the function but it looks for a word and extracts the numbers that follow after.  I've confirmed that this exacts the numbers correctly (no spaces or extra characters).  Numbers can be either negative or positive.

    Global $find_price = searcharray($price,$cArray);
    Global $pfind_price = searcharray($price,$pArray);
    Global $pricedir = calcdir(Number($pfind_price),Number($find_price));

Then I run it through a simple calculation to determine the direction, up or down

Func calcdir($previous,$current)
    If $previous > $current Then
        Local $updown = "down";
    ElseIf $previous < $current Then
        Local $updown = "up";
    ElseIf $previous = $current Then
        Local $updown = "steady";
    Else
        Local $updown = "n/a";
    EndIf
    Return $updown;
EndFunc

 

The result for $pricedir is not what I expected.  When the numbers are positive everything works great however when they are negative it is either inverse result or it tells me the values are the same (in this case I call it "steady").  As an example it may say that coming from -0.5 to -0.3 is down or steady as an example when it's clearly an increase in value.

Any help is greatly appreciated.  I'm sure it's something simple that I'm missing.

Edited by vulcan4d
Link to comment
Share on other sites

  • Moderators

vulcan4d,

I have just tested your function using Number to convert some trial positive and negative strings and everything works as expected. Could you please post the files concerned so we can take a look at exactly what you are extracting - I know you say the contents extract correctly, but there must be something which is leading to an incorrect conversion.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Here I am bashing my head why the code doesn't work and it ends up being a character issue.  The files generated are using the wrong negative character.  I realized it when pasting into Scite.  Typically a - symbol shows up as red however when I pasted the negative number it was black.  This indicated right away that it was not a negative character but something else even though it looks exactly the same in Notepad.  As you can see below the top number I took from the file and the below number is after I changed the - character to what it should be.  It's all working now after I get the script to swap the character.  I appreciate the helping hand!

25.00
-25.00

 

Link to comment
Share on other sites

  • Moderators

vulcan4d,

Glad you found the problem.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

@vulcan4d,

Your − sign is the Unicode codepoint U+2212 (Minus sign) and, as you found by yourself, isn't recognized in AutoIt which uses the more common - U+002D (Hyphen-Minus) just like many softwares and languages.

− use should be limited to smart math presentation. Similar issue exists with, for example,  ∕  U+2215 (Division slash) vs. / U+002F (Solidus) or ∗ U+2217 (Asterisk operator) vs. "usual" * U+002A (Asterisk).

EDIT: previous post is an error but a bug and I can't edit it for some unknown reason.

Edited by Melba23
Previous post deleted

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

  • Moderators

JockoDundee,

No.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...