没有小数的数据循环的Javascript计算

时间:2013-05-29 09:06:55

标签: javascript loops rounding tofixed

我正在尝试计算元素循环的价格:

function calculateBill(id,price)
{

    var t = document.getElementById('total').value;

    var qty = document.getElementById('qty_'+id).value;

    var total = qty * price;


    var tcost = Number(t) + Number(total);

    document.getElementById('total').value = tcost ;
}

我的PHP循环是:

<form name="sendgoods.php" method="post">
                        <?php


                        unset($data2);
                        unset($result2);
                        for( $i2 = 0; $i2<count($r2); $i2++ )
                        {
                        ?>
                        <tr>
                            <td><?php echo $r2[$i2]['veg_name']; ?></td>
                            <td><?php echo $r2[$i2]['ret_price']; ?></td>
                            <td><?php echo $r2[$i2]['mop']; ?></td>
                            <td><?php echo $r2[$i2]['ret_margin']; ?></td>
                            <td>
                                <input type="text" id = "qty_<?php echo $i2; ?>" name="qty_<?php echo $i2; ?>" onkeyup="calculateBill('<?php echo $i2; ?>','<?php echo round($r2[$i2]['ret_price'],2); ?>')"  />
                                <input type="hidden" name="veg_name_<?php echo $i2; ?>" value="<?php echo $r2[$i2]['veg_name']; ?>" />
                                <input type="hidden" name="rate_<?php echo $i2; ?>" value="<?php echo $r2[$i2]['avg_rate']; ?>" />
                                <input type="hidden" name="mop_<?php echo $i2; ?>" value="<?php echo $r2[$i2]['mop']; ?>" />
                                <input type="hidden" name="ws_price_<?php echo $i2; ?>" value="<?php echo round($r2[$i2]['ws_price'],2); ?>" />
                                <input type="hidden" name="ws_margin_<?php echo $i2; ?>" value="<?php echo $r2[$i2]['ws_margin']; ?>" />
                                <input type="hidden" name="ret_price_<?php echo $i2; ?>" value="<?php echo round($r2[$i2]['ret_price'],2); ?>" />
                                <input type="hidden" name="ret_margin_<?php echo $i2; ?>" value="<?php echo $r2[$i2]['ret_margin']; ?>" />

                            </td>
                        </tr>
                        <?php } ?>
                        </table>
                            <input type="hidden" name="customer_id" value="<?php echo $cid; ?>" />
                            <input type="hidden" name="dt" value="<?php echo $dt_str; ?>" />
                            <input type="hidden" name="customer_type" value="<?php echo $ctype_id; ?>" />
                            <input type="hidden" name="counter" value="<?php echo count($r2); ?>"  />
                            <input type="hidden" name="add_goods" value="1" />


                             <div class="we">

                <span class="dscnt">DISCOUNT - </span>
                 <input type="text" id="discount" name="discount"  onchange="calculateDiscount()" />

                <span class="billng_amnt">Total Billing amount - </span>
                <input type="text" id="total" readonly="readonly" />

            </div>

                            <input type="submit" value="SUBMIT" />

                        </form>

我的问题是,如果我添加tcost .toFixed(0),它会计算每行总费用的舍入值。假设值为36,50.8和23.64。它计算为36 + 51 + 24 = 111.但我想要每行总计的舍入值,即36 + 50.8 + 23.64 = 110.44,它可以向上舍入为110.00。你能告诉我怎么做到这一点吗?

更新: 它就像假设你有3个循环。在第一个循环中,总行值为36,第二个循环的总行值为50.8(因此现在的总值为36 + 50.8)。第三个循环行值为23.64(因此总值为36 + 50.8 + 23.64)。如果我将固定(0)加到总数中,则加法将类似于(36 + 51 + 24)= 111。但客户需要加成如36 + 50.8 + 23.64 = 110.44,现在这个圆值是110.00。希望问题现在很清楚

3 个答案:

答案 0 :(得分:0)

使用parseFloat

是为了     a = 30     b = 50.8     c = 23.64

value = parseFloat(a) + parseFloat(b) + parseFloat(c);

答案 1 :(得分:0)

嗨,读你的问题非常令人困惑......尤其是当你评论它说“它在php文件中”时......我认为这是一个javascript问题!?

您的计算也不正确

30 + 50.8 + 23.64 = 104.44

在javascript中:

var total = Number(30) + Number(50.8) + Number(23.64);
alert(total.toFixed()) // gives you '104'

希望有所帮助

答案 2 :(得分:0)

似乎您想要舍入值。数学中有3个函数:

  • Math.floor MDN
  • Math.ceil MDN :返回大于或等于数字的最小整数。
  • Math.round MDN :返回舍入到最接近整数的数字的值。
  

但我想要每行总计的圆值,即36 + 50.8 + 23.64   = 110.44,可以向上舍入为110.00

我认为你需要Math.round

Math.round ( 110.44 ) //110