代码之家  ›  专栏  ›  技术社区  ›  Rzj Hayabusa

如何计算和显示两位小数

  •  3
  • Rzj Hayabusa  · 技术社区  · 6 年前

    我有这些html选择

    <tr>
        <td><input type="text" class="" id="total_score" value=""></td>
    </tr>
    
    <tr>
        <td>
            <select class="input1" id="" name="">
            <option value="0">0%</option>
            <option value="0.05">5%</option>
            <option value="0.10">10%</option>
            <option value="0.15">15%</option>
            <option value="0.20">20%</option>
            <option value="0.25">25%</option>
            <option value="0.30">30%</option>
            <option value="0.35">35%</option>
            <option value="0.40">40%</option>
            <option value="0.45">45%</option>
            <option value="0.50">50%</option>
            <option value="0.55">55%</option>
            <option value="0.60">60%</option>
            <option value="0.65">65%</option>
            <option value="0.70">70%</option>
            <option value="0.75">75%</option>
            <option value="0.80">80%</option>
            <option value="0.85">85%</option>
            <option value="0.90">90%</option>
            <option value="0.95">95%</option>
            <option value="1">100%</option>
            </select>
        </td>
        <td><input type="text" class="" id="score1" name="" value="0" placeholder="" readonly></td>
    </tr>
    <tr>
        <td>
            <select class="input2" id="" name="">
            <option value="0">0%</option>
            <option value="0.05">5%</option>
            <option value="0.10">10%</option>
            <option value="0.15">15%</option>
            <option value="0.20">20%</option>
            <option value="0.25">25%</option>
            <option value="0.30">30%</option>
            <option value="0.35">35%</option>
            <option value="0.40">40%</option>
            <option value="0.45">45%</option>
            <option value="0.50">50%</option>
            <option value="0.55">55%</option>
            <option value="0.60">60%</option>
            <option value="0.65">65%</option>
            <option value="0.70">70%</option>
            <option value="0.75">75%</option>
            <option value="0.80">80%</option>
            <option value="0.85">85%</option>
            <option value="0.90">90%</option>
            <option value="0.95">95%</option>
            <option value="1">100%</option>
            </select>
        </td>
        <td><input type="text" class="" id="score2" name="" value="0" placeholder="" readonly></td>
    </tr>
    

    我用这些值input1,input2,score1,score2计算mround。

    var input1      = $(".input1").val();
    var input2      = $(".input2").val();
    var score1      = $("#score1").val();
    var score2      = $("#score2").val();
    
    var sumproduct = (parseFloat(input1) * parseFloat(score1)) + (parseFloat(input2) * parseFloat(score2));
    var unit = 0.50;
    
    var sumproduct = sumproduct.toFixed(2);
    
    var remainder = parseFloat(sumproduct) % parseFloat(unit);
    var mround = (parseFloat(remainder) < parseFloat(unit)/2) ? parseFloat(sumproduct) - parseFloat(remainder) : parseFloat(sumproduct) + (parseFloat(unit) - parseFloat(remainder));
    
    var mround = String(mround.toFixed(2));
    $('#total_score').val(mround);
    
    
    // console.log(input1);
    // console.log(input2);
    // console.log(score1);
    // console.log(score2);
    // console.log(sumproduct);
    // console.log(mround);
    

    当我console.log并提醒计算值时,它看起来很好,但是当我试图在html输入中显示它时,它总是以1位小数代替ie 3.5。我的目标是显示3.50这样的值。这个值总是在2位小数中。

    我是不是丢了什么东西?如果有人能帮助解决这个问题,我将不胜感激。

    谢谢。

    2 回复  |  直到 6 年前
        1
  •  0
  •   I_Al-thamary    6 年前

    你的代码运行良好。我只是重写 var sumproduct = parseFloat((input1) * (score1)) + ((input2) * (score2)).toFixed(2); var unit = 0.50;

    var sumproduct =parseFloat( sumproduct).toFixed(2);

    重新排列代码并执行此操作 parseFloat(input1).toFixed(2)

    function print(){
    
    var input1      = $(".input1").val();
    var input2      = $(".input2").val();
    var score1      = $("#score1").val();
    var score2      = $("#score2").val();
    
    var sumproduct = ((input1) * (score1)) + ((input2) * (score2));
    var unit = 0.50;
    
    var sumproduct =parseFloat( sumproduct).toFixed(2);
    
    var remainder =parseFloat( (sumproduct) % (unit)).toFixed(2);
    var mround = ((remainder) < (unit)/2) ? (sumproduct) - (remainder) : (sumproduct) + ((unit) - (remainder));
    
    var mround = String(parseFloat(mround).toFixed(2));
    $('#total_score').val(mround);
    
    console.log(parseFloat(input1).toFixed(2));
    console.log(parseFloat(input2).toFixed(2));
    console.log(parseFloat(score1).toFixed(2));
    console.log(parseFloat(score2).toFixed(2));
    
    console.log((sumproduct));
    
     console.log(mround);}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
    <tr>
        <td><input type="text" class="" id="total_score" value=""></td>
    </tr>
    
    <tr>
        <td>
            <select class="input1" id="" name="">
            <option value="0">0%</option>
            <option value="0.05">5%</option>
            <option value="0.10">10%</option>
            <option value="0.15">15%</option>
            <option value="0.20">20%</option>
            <option value="0.25">25%</option>
            <option value="0.30">30%</option>
            <option value="0.35">35%</option>
            <option value="0.40">40%</option>
            <option value="0.45">45%</option>
            <option value="0.50">50%</option>
            <option value="0.55">55%</option>
            <option value="0.60">60%</option>
            <option value="0.65">65%</option>
            <option value="0.70">70%</option>
            <option value="0.75">75%</option>
            <option value="0.80">80%</option>
            <option value="0.85">85%</option>
            <option value="0.90">90%</option>
            <option value="0.95">95%</option>
            <option value="1">100%</option>
            </select>
        </td>
        <td><input type="text" class="" id="score1" name="" value="0.00" placeholder="" ></td>
    </tr>
    <tr>
    
        <td>Telekom Malaysia Billing Arrears</td>
        <td>
            <select class="input2" id="" name="">
            <option value="0">0%</option>
            <option value="0.05">5%</option>
            <option value="0.10">10%</option>
            <option value="0.15">15%</option>
            <option value="0.20">20%</option>
            <option value="0.25">25%</option>
            <option value="0.30">30%</option>
            <option value="0.35">35%</option>
            <option value="0.40">40%</option>
            <option value="0.45">45%</option>
            <option value="0.50">50%</option>
            <option value="0.55">55%</option>
            <option value="0.60">60%</option>
            <option value="0.65">65%</option>
            <option value="0.70">70%</option>
            <option value="0.75">75%</option>
            <option value="0.80">80%</option>
            <option value="0.85">85%</option>
            <option value="0.90">90%</option>
            <option value="0.95">95%</option>
            <option value="1">100%</option>
            </select>
        </td>
        <td><input type="text" class="" id="score2" name="" value="0.00" placeholder="" ></td>
        <td><input type="button" onclick="print()" value="show the result"> </td>
    </tr>
        2
  •  -1
  •   Piotr Mirosz    6 年前

    当您使用val时,它的值是1.00==1,所以即使您传递1.00,系统也将传递值1而不是1.00,因为它们是相等的。如果需要在控制台、警报、提示、内部等中显示值,则不传递val。

    如果需要将数值val替换为字符串,请使用 .toString() 所以把最后一个代码放在 mround = (mround.toFixed(2)).toString() ; 它会起作用的