Results 1 to 5 of 5

Thread: How to round variables up to 2 decimal places?

  1. #1
    Join Date
    Jan 2010

    How to round variables up to 2 decimal places?


    My javascripting is getting there, I have been learning for the last week and I have produced a working script however im getting stuck with how you round a variable (stored user input) up to the nearest whole number to 2 decimals

    I have looked at many tutorials and I think that the math.round has to be used somewhere but I cannot work out the syntax to integrate it into my code because everywhere I have looked seems to be using document.write syntax:

    <script language="javascript">
    function measurements()
    var val1 = parseInt(document.getElementById("value1").value);
    var val2 = parseInt(document.getElementById("value2").value);
    var val3 = parseInt(document.getElementById("value3").value);
    var ans1 =document.getElementById("answer")
    var ans2 =document.getElementById("answer2")
    var ans3 =document.getElementById("answer3")
    ans1.value = (val1*val2) /10000;
    ans2.value = (val1*val2) /10000 *2;
    ans3.value = (val1*val2) /10000 *2 * val3 *1.05;
    <h1>Calculating plain roof tiles</h1>
    <p>Please use our online calculator to calculate an estimate of how many plain roof tiles you need for the whole of a gable to gable roof. The calculator makes three measurements to calculate the amount needed:</p>
    <h3><strong>Plain roof tile calculator</strong></h3>
    <p> </p>
    Enter length of the roof (eaves length): <input type="text" id="value1" name="value1" size = 7 value""/>cm
    Enter length of the gable end roof verge: <input type="text" id="value2" name="value2" size = 5 value""/>cm
    How many plain roof tiles per square metre: <input type="text" id="value3" name="value3" size = 1 value""/>
    <input type="button" name="Submit" value="Calculate tiles needed" onclick="javascript:measurements()"/>
    Half of the roof area is <input type="text" id="answer" name="answer" size = 1 value"/> m2. The whole roof area is <input type="text" id="answer2" name="answer2" size = 1 value"/> m2
    <h4><strong>The whole roof:</strong></h4>
    Approximately <input type="text" id="answer3" name="answer3" size = 2 value"/> plain roof tiles are needed for this type of roof (including 5% wastage)</B> 
    Please note that this is an approximate estimation based on a mathematical formula. If you need a more accurate figure we recommend that you carry out your own independent calculation
    Could anyone help me\give me pointers with how I can achieve rounding up to two decimal places for ans1,2 and 3?

    Thanks in advance, this is a great forum and have learnt so much already


  2. #2
    Join Date
    Feb 2006
    ans1.value = (val1*val2/10000).toFixed(2);
    If you want to round it up and have '.00' tacked on the end, use
    ans1.value = Math.ceil(val1*val2/10000).toFixed(2);

  3. #3
    Join Date
    Oct 2003
    Andover, UK
    Harder than you'd imagine. One of JS's weakness is its lack of inbuilt decimal place rounding function. Here's how you do it:

    var myNum = 1.32531;
    var myNumToTwoDecimalPlaces = Math.round(myNum*Math.pow(10,2))/Math.pow(10,2);
    (2 refers to the decimal places desired)

  4. #4
    Join Date
    Aug 2007
    toFixed and toPrecision are the built in methods, to decimal places and significant figures respectively. The disadvantage with them is they don't remove trailing zeros, but you can either use the above solution, or a regular expression to remove them if necessary.

  5. #5
    Join Date
    Jan 2010
    Thanks for the replies, it has worked like a charm!



Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center