如何将数字格式化为2位小数,但仅在已经有小数的情况下?

Jam*_*son 14 html javascript jquery decimal

我有一个jQuery 1.5+脚本,你在下拉菜单(1,2,3等)中选择一个数量,它将该数量乘以1.50美元,以显示总价.基本上 - 它将所选数量(1,2,3等)乘以1.50美元的基本价格 - 但是我无法弄清楚如何正确显示价格小数 - 例如:如果您选择数量为2,价格正确显示为$ 3(无小数).但是,如果您选择1或3,则价格显示为$ 1.5/$ 4.5 - 在小数位数百分之一处缺少0.

这是代码 - 任何想法如何在没有两位小数的情况下显示第二个0?3美元应保持3美元,但4.5美元应该变成4.50美元等等 - 如果没有将所有数字显示为两位小数,我就无法工作,这就是我被困住的地方!

<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>
Run Code Online (Sandbox Code Playgroud)

我正在尝试像result = num.toFixed(2); 但是还不能让它发挥作用.

非常感谢你!

odr*_*drm 60

这应该做的工作:

var formattedNumber = (x * 1.5).toFixed(2).replace(/[.,]00$/, "");
Run Code Online (Sandbox Code Playgroud)

  • 完美运行!删除 *1,5 使其成为一个很好的可重用代码行 (3认同)
  • `/[.,]0+$/ ` 似乎是一个更好的通用解决方案。 (3认同)
  • 到底为什么有人会对此表示反对? (2认同)

小智 24

我建议:

Math.round(floatNumber*100)/100;
Run Code Online (Sandbox Code Playgroud)

它会自动添加0,1或2个小数位.

  • 这是行不通的。如果`floatNumber`是`4.5`,输出仍然是`4.5`,而不是OP想要`4.50` (4认同)

Pee*_*ter 20

工作示例: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);

    });
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Poi*_*nty 16

怎么样

var str = num.toFixed(2).replace(/\.00$/, '');
Run Code Online (Sandbox Code Playgroud)


小智 14

const number = Number(Number(value).toFixed(t));
Run Code Online (Sandbox Code Playgroud)

有了这个,您可以将数字转换为正确的小数位数,并且在转换回数字时,去掉所有无用的零。


ken*_*bec 6

如果数字%1 不返回零,则它不是整数。

//var s='123';
var s='1.2';

s=Number(s);
alert(s%1? s.toFixed(2): s);
Run Code Online (Sandbox Code Playgroud)


daC*_*oda 5

使用这个功能:

//E.g. 0.5 becomes 0.50; 7 stays as 7.

function twoDecimalPlacesIfCents(amount){
    return (amount % 1 !== 0) ? amount.toFixed(2) : amount;
}
Run Code Online (Sandbox Code Playgroud)