• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

Reply to: Excel Wierdness

Collapse

You are not logged in or you do not have permission to access this page. This could be due to one of several reasons:

  • You are not logged in. If you are already registered, fill in the form below to log in, or follow the "Sign Up" link to register a new account.
  • You may not have sufficient privileges to access this page. Are you trying to edit someone else's post, access administrative features or some other privileged system?
  • If you are trying to post, the administrator may have disabled your account, or it may be awaiting activation.

Previously on "Excel Wierdness"

Collapse

  • Scrag Meister
    replied
    WPlatypusS

    Leave a comment:


  • lilelvis2000
    replied
    Originally posted by Platypus View Post
    Personally, I wouldn't use floating point numbers at all (because this can happen even with Doubles), I'd keep the version as an integer, adding one each time and sticking in a dot as needed.
    yeah. or just use a string and just increment that part after the last '.'

    Leave a comment:


  • Platypus
    replied
    Originally posted by pjclarke View Post
    No, i didn't know that actually. Thanks.
    Personally, I wouldn't use floating point numbers at all (because this can happen even with Doubles), I'd keep the version as an integer, adding one each time and sticking in a dot as needed.

    Leave a comment:


  • DimPrawn
    replied
    Originally posted by pjclarke View Post
    No, i didn't know that actually. Thanks.
    You don't know about binary representation of floating point numbers?

    Are you involved in the Global Warming climate models by any chance?

    Leave a comment:


  • pjclarke
    replied
    No, i didn't know that actually. Thanks.

    Leave a comment:


  • jamesbrown
    replied
    Originally posted by pjclarke View Post
    Simple macro to save a copy of a spreadsheet, and increment version number by 0.1

    Code:
    Dim Frontsheet As Worksheet
    Dim CurrentVersion As Single
    
    Set Frontsheet = Worksheets("Dashboard")
    CurrentVersion = Frontsheet.Cells(5, 4).Value
    CurrentVersion = CurrentVersion + 0.1
    
    ActiveWorkbook.Save
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\MPR Mapping" & "." & Format(CurrentVersion, "00.0") & ".xlsm"
    Frontsheet.Cells(5, 4).Value = CurrentVersion
    Frontsheet.Cells(6, 4).Value = Now()
    Excel is adding spurious numbers onto the version number. E.g. If I start with 0.1 after the macro I get not 0.2 but 0.200000002980232 in the cell.

    Which in this context is annoying, as the version number gets written to some files generated by the sheet and it looks wierd, but I can easily imagine some other applications where it could be a critical fault.

    Changing the type of CurrentVersion to Double cures it but I'd like to know whats going on. Is it a bug in VBA?

    Excel 2007, if thats relevant.
    I guess you probably know that 0.1 doesn't have an exact binary floating point representation, so arithmetic with such numbers can result in this. This is why, for example, you'd never code a test for equality on the basis of ==. So, in this case, you'd just have to round.

    Leave a comment:


  • pjclarke
    started a topic Excel Wierdness

    Excel Wierdness

    Simple macro to save a copy of a spreadsheet, and increment version number by 0.1

    Code:
    Dim Frontsheet As Worksheet
    Dim CurrentVersion As Single
    
    Set Frontsheet = Worksheets("Dashboard")
    CurrentVersion = Frontsheet.Cells(5, 4).Value
    CurrentVersion = CurrentVersion + 0.1
    
    ActiveWorkbook.Save
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\MPR Mapping" & "." & Format(CurrentVersion, "00.0") & ".xlsm"
    Frontsheet.Cells(5, 4).Value = CurrentVersion
    Frontsheet.Cells(6, 4).Value = Now()
    Excel is adding spurious numbers onto the version number. E.g. If I start with 0.1 after the macro I get not 0.2 but 0.200000002980232 in the cell.

    Which in this context is annoying, as the version number gets written to some files generated by the sheet and it looks wierd, but I can easily imagine some other applications where it could be a critical fault.

    Changing the type of CurrentVersion to Double cures it but I'd like to know whats going on. Is it a bug in VBA?

    Excel 2007, if thats relevant.

Working...
X