Round Double Type value to Two decimal place in lotuscript

Posted on 2012-08-20
Last Modified: 2013-12-18
How do you round 4.68079444599355E-04 to two decimal places.  Lotusscript Rounding returns 0 and Evaluate @Round return OverFlow Error.

Here is my code.

'Initialize Varibles
      Dim ws As New NotesUIWorkspace
      Dim uidoc As NotesUIDocument
      Dim ses As New NotesSession
      Dim db As NotesDatabase
      Dim doc, pdoc As notesDocument
      Dim PCDayWk100 As Integer 'User Entry
      Dim NCDayWk100 As Double
      Dim NCDayWk120 As Double
      Dim Yrly100Demand As Double
      Dim SecPerHr As Integer 'Profile Retrieved
      Dim HrsPerShift As Double 'Profile Retrieved
      Dim NoOfShifts As Double 'User Entry
      Dim DayPerYr As Double 'Profile Retrieved
      Dim PCT As Double'User Entry
      Dim NoOfLines As Double 'User Entry
      Dim PCYrlyDemand As Double
      Dim dataEntrySum  As Double
      Dim PCYrlyDemandDivDataEntrySum  As Double
      'Set Variables
      Set db = ses.CurrentDatabase
      Set pdoc = db.GetProfileDocument("DBProfile")
      Set uidoc = ws.CurrentDocument
      Set doc = uidoc.Document
      If Not uidoc.FieldGetText("PCDayWk100") = "" Then
            PCDayWk100= uidoc.FieldGetText("PCDayWk100")
            NoOfShifts= uidoc.FieldGetText("NoOfShifts")
            Yrly100Demand = getYrlyDemandCol(db, doc.WrkCellID(0))
            PCT= uidoc.FieldGetText("PCT")
            HrsPerShift = pdoc.HrPerShift(0)
            DayPerYr = pdoc.DaysPerYear(0)
            SecPerHr = pdoc.SecPerHr(0)
            NoOfLines = doc.NoLines(0)
            'Perform Calculation
            PCYrlyDemand = PCDayWk100 * Yrly100Demand
            dataEntrySum = NoOfLines * SecPerHr * HrsPerShift * NoOfShifts * DayPerYr
            'dataEntrySumDivPCT = dataEntrySum / PCT
            PCYrlyDemandDivDataEntrySum = PCYrlyDemand / dataEntrySum
            NCDayWk100 =PCYrlyDemandDivDataEntrySum  / PCT
            newValue =  Evaluate("@Round(" & NCDayWk100 & ", 2)")
            Call uidoc.FieldSetText("NCDayWk100", Cstr(NCDayWk100))
            'Set Needed Capacity @120%
            NCDayWk120= NCDayWk100   * 1.2
            Call uidoc.FieldSetText("NCDayWk120", Cstr(NCDayWk120))
      End If
Question by:Robert Treadwell
    LVL 43

    Expert Comment

    by:Steve Knight
    Aside from any other functions in general to round to two decimal places you can just multiply by 100, take Integer of it and divide by 100.

    BUT 4.68079444599355E-04 = 0.000468079444599355

    So rounded to two spaces it IS "0"

    LVL 43

    Accepted Solution

    Hmm re-reading are you just saying you want it to say 4.68E-04 then?


    LVL 46

    Expert Comment

    by:Sjef Bosman
    You have good eyes, Sir! :-)

    As far as the Overflow Error is concerned:
          newValue =  Evaluate("@Round(" & NCDayWk100 & ", 2)")
    contains a formula error. Try to find the four-pixel difference with this line:
          newValue =  Evaluate("@Round(" & NCDayWk100 & "; 2)")

    Points to Dragon-IT!
    LVL 43

    Expert Comment

    by:Steve Knight
    Yes good point there Sjef, I didn't actually look at the evaluated command since I knew it was going to be 0 (or error in this case).

    LVL 43

    Expert Comment

    by:Steve Knight
    rtreadwell - are you there?
    LVL 43

    Expert Comment

    by:Steve Knight
    Well thankyou for the points and grade.... tipped me over into being a "Guru" apparently ... another 10 years and could make a wizard if Notes is still around...

    Lotus Notes points: 151546
    148454 more points to become a Wizard in Lotus Notes!

    LVL 46

    Expert Comment

    by:Sjef Bosman
    Congrats! And a little focus might get you there sooner... :-)
    LVL 43

    Expert Comment

    by:Steve Knight
    Yeah, inbetween running a business, fixing everyone else's problems and looking after the kids you mean :-)

    Featured Post

    Looking for New Ways to Advertise?

    Engage with tech pros in our community with native advertising, as a Vendor Expert, and more.

    Join & Write a Comment

    You’ve got a lotus Domino web server, and you have been told that “leverage browser caching” is a must do. This means that we have to tell the browser everywhere in the web to use cache. In other words, we set (and send) an expiration date in the HT…
    For beginners of Lotus Notes user this is important to know about the types of files and their location supported by IBM Notes. Mostly users are unaware about how many file types are created and what their usages are. This Article is fully dedicated…
    In this sixth video of the Xpdf series, we discuss and demonstrate the PDFtoPNG utility, which converts a multi-page PDF file to separate color, grayscale, or monochrome PNG files, creating one PNG file for each page in the PDF. It does this via a c…
    Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

    733 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now