Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I format a number to 2 decimal places, but only if there are already decimals?

I have a jQuery 1.5+ script, and you select a quantity in a drop-down menu (1,2,3, etc) and it multiplies that quantity by $1.50 to show you a total price. Basically - it's multiplying the quantity selected (1, 2, 3, etc) by the base price of $1.50 - BUT - I can't figure out how to display the price correctly with decimals - example: if you select a quantity of 2, the price displays correctly as $3 (no decimals). But, if you choose 1, or 3, the price displays as $1.5 / $4.5 - missing a 0 in the hundredths decimal place.

Here's the code - any idea how to show a second 0 in the case that there are not already two decimals? $3 should stay as $3, but $4.5 should become $4.50, etc - I can't get it to work without showing ALL numbers to two decimals, and that's where I'm stuck!

<script type='text/javascript'>     
    $(function() {         
        $('#myQuantity').change(function() {             
            var x = $(this).val();                      
            $('#myAmount').text('$'+(x*1.5));// this is the part that isn't displaying decimals correctly!
        });     
    }); 
</script>

I'm experimenting with something like result = num.toFixed(2); but can't get it to work yet.

Thank you Kindly!

like image 619
Jamison Avatar asked Apr 11 '11 14:04

Jamison


People also ask

How do you only get to two decimal places?

If we want to round 4.732 to 2 decimal places, it will either round to 4.73 or 4.74. 4.732 rounded to 2 decimal places would be 4.73 (because it is the nearest number to 2 decimal places). 4.737 rounded to 2 decimal places would be 4.74 (because it would be closer to 4.74).


4 Answers

This should do the job:

var formattedNumber = (x * 1.5).toFixed(2).replace(/[.,]00$/, ""); 
like image 172
odrm Avatar answered Sep 19 '22 06:09

odrm


I suggest:

Math.round(floatNumber*100)/100; 

It automatically adds 0, 1 or 2 decimal places.

like image 29
DGV Avatar answered Sep 22 '22 06:09

DGV


Working example: http://jsfiddle.net/peeter/JxPZH/

$(document).ready(function() {
    $('#itemQuantitySelect_3').change(function() {
        
        var itemPrice = 1.50;
        var itemQuantity = $(this).val();
        var quantityPrice = (itemPrice * itemQuantity);
        if(Math.round(quantityPrice) !== quantityPrice) {
            quantityPrice = quantityPrice.toFixed(2);
        }
        
        $(this).next("span").html("$" + quantityPrice);

    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/" method="post">
    <select id='itemQuantitySelect_3' name="itemQuantity_3">
        <option value='1'>1 Item</option>
        <option value='2'>2 Items</option>
        <option value='3'>3 Items</option>
    </select>
    <span>$1.50</span>
</form>
like image 33
Peeter Avatar answered Sep 18 '22 06:09

Peeter


How about

var str = num.toFixed(2).replace(/\.00$/, '');
like image 36
Pointy Avatar answered Sep 18 '22 06:09

Pointy