【问题标题】:jQuery Rounding to Whole Number & Separating with CommasjQuery 四舍五入到整数并用逗号分隔
【发布时间】:2018-07-31 16:28:14
【问题描述】:
    <form>
    <label>Value:</label>
    <input name="value" id="value" value="" placeholder="250000" type="number">
    <br><br>
    <label>Growth:</label>
    <select name="growth" id="growth">
        <option value=".05" selected="selected">0-5%</option>
        <option value=".08">5-10%</option>
        <option value=".10">10-20%</option>
        <option value=".12">20+%</option>
    </select>
    </form>
    <p id="total"></p>

$("#value,#growth").change(function () {
    var number= $('#value').val();
    var goal= $('#growth').val()*1;
    if ( number >= 1 && number <=250000 ) {
        var growth = goal + .02;
    } 
    if ( number >= 250000 && number <=500000 ) {
        var growth = goal + .01;
    } 
    if ( number >= 500000 && number <=500000000 ) {
        var growth = goal;
    }
    var total = number*growth;
    $("#total").text(total);
});

我需要创建一个简单的计算器,根据输入的不同变量将百分比乘以另一个字段的值,并给出一个美元数字金额。我的一切都按预期工作。但是,我希望在适当的位置将最终的“总计”数字转换为整数和逗号。

示例:如果输入 100,000 作为值并选择 0-5% 作为增长,则总输出为 7000.00000001。我希望将这个数字格式化为 7,000。我查看了其他问题,但没有找到对我想要实现的目标的适当回应。我确实尝试在这里使用选择的答案: Add comma to numbers every three digits

但是,它不会四舍五入到整数(或至少 2 位小数),并且会继续在小数点后添加逗号。这包含在下面的小提琴中。有没有一种简单的方法来实现我想要做的事情?谢谢

这是我的小提琴的链接: https://jsfiddle.net/xpvt214o/522647/

【问题讨论】:

  • 所以四舍五入……似乎是一个合乎逻辑的答案,四舍五入而不是调用添加逗号的代码……
  • total.toFixed(3);更新小提琴:jsfiddle.net/f1gz8uLn

标签: jquery regex


【解决方案1】:

我添加了一个正则表达式函数并使用了 JavaScript Math.Round 函数。

以下是在您的 jsfiddle 中测试的工作示例:

$.fn.digits = function(){ 
    return this.each(function(){ 
        $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
    })
}

$("#value,#growth").change(function () {

    var number= $('#value').val();
    var goal= $('#growth').val()*1;
    if ( number >= 1 && number <=250000 ) {
        var growth = goal + .02;
    } 
    if ( number >= 250000 && number <=500000 ) {
        var growth = goal + .01;
    } 
    if ( number >= 500000 && number <=500000000 ) {
        var growth = goal;
    }
    var total = number*growth;
    total = Math.round(total);
    //total = Number(total).toFixed(2);
    $("#total").text(total);
    $("#total").digits();
});

您想保留小数而不是整数,请使用 ('#total).toFixed(2); 而不是圆形。 只需提交 round() 行并取消提交 tofixed() 行。

这个答案Add comma to numbers every three digits提供了RegEX

【讨论】:

  • 太棒了!非常感谢。我不敢相信我错过了。欣赏它。
  • 没问题。很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
相关资源
最近更新 更多