Javascript 加班费总额计算不正确的原因是什么?

Javascript 加班费总额计算不正确的原因是什么?,javascript,php,html,css,Javascript,Php,Html,Css,这里有一点解释。停车场停车收费5美元,最多停车三小时。车库每超过三小时或不足一小时,每小时额外收费1.50美元。任何24小时内的最高收费为18.00美元。我们假设停车场一次不超过24小时 <script type="text/javascript"> function multiply() { var hoursParked = document.getElementById('hP').value; var price = 5.00; var totalCost = docum

这里有一点解释。停车场停车收费5美元,最多停车三小时。车库每超过三小时或不足一小时,每小时额外收费1.50美元。任何24小时内的最高收费为18.00美元。我们假设停车场一次不超过24小时

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
是否有任何理由不计算超过3小时的总数?我感觉它和sum变量有关,但我不能确定它。

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>

函数乘法(){
var hoursParked=document.getElementById('hP').value;
var价格=5.00;
var totalCost=document.getElementById('total');
var totalPayment=(停车小时数*价格);
如果(小时数<3){
总和=价格*小时;
回报金额;
}
否则{
总和=((小时-3)*0.5*价格)+(价格*小时);
回报金额;
} 
totalCost.value=sum;}







函数乘法(){
var hoursParked=document.getElementById('hP').value;
var价格=5.00;
var totalCost=document.getElementById('total');
var totalPayment=(停车小时数*价格);
如果(停车小时请试试这一个

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
function multiply() {

                    var hoursParked = document.getElementById('hP').value;
                    var price = 5.00;
                    var totalCost = document.getElementById('total');
                    var totalPayment = (hoursParked * price);
                    var sum="";
                    if (hoursParked <= 3) {
                    sum = price * hoursParked;

                    }
                    else {
                     sum = ((hoursParked - 3) * (price + 1.50)) + (price * 3);

                    } 
                    $('#total').val(sum) ;
                }
函数乘法(){
var hoursParked=document.getElementById('hP').value;
var价格=5.00;
var totalCost=document.getElementById('total');
var totalPayment=(停车小时数*价格);
var sum=“”;

如果(hoursParked假设您的意思是前3个小时总共5.00美元(而不是每小时5.00美元)
假设此后的平均小时数为每小时1.50美元(而不是每小时6.50美元)

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
我已经分解了getTotalPayment()函数,因此您可以使用一些alert()语句快速尝试它

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
//should all display 5.00
alert(getTotalPayment(0.00001));
alert(getTotalPayment(1));
alert(getTotalPayment(2));
alert(getTotalPayment(3));

//should display 6.50
alert(getTotalPayment(3.01));
alert(getTotalPayment(3.9));
alert(getTotalPayment(4));

//should display 8
alert(getTotalPayment(5));

//should display 9.50
alert(getTotalPayment(5.01));
alert(getTotalPayment(5.999));

//should display 17
alert(getTotalPayment(11));

//should display 18
alert(getTotalPayment(11.1));
alert(getTotalPayment(12));
alert(getTotalPayment(24));
编辑:阅读OP的澄清评论后

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
假设前3小时每小时5.00美元
假设此后的时间为每小时6.50美元

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
function getTotalPayment(hoursParked) {
   var initialRate = 5.00;
   var augmentedRate = 6.50;
   var baseHours = 3;
   var maxPayment = 18.00;
   hoursParked = Math.ceil(hoursParked);  //round up any fractional hour
   return Math.min(
       //cost for any hours up to 3
       Math.min(3, hoursParked) * initialRate +
       //cost for any hours beyond 3
       Math.max(hoursParked - baseHours, 0) * augmentedRate, 
       maxPayment);
}
以及一些具有这些新假设的函数测试用例:

<script type="text/javascript">

function multiply() {

var hoursParked = document.getElementById('hP').value;
var price = 5.00;
var totalCost = document.getElementById('total');
var totalPayment = (hoursParked * price);
    if (hours < 3) {
    sum = price * hours;
    return sum;   
}
else {
    sum = ((hours - 3) * 0.5 * price) + (price * hours);
    return sum;
} 
totalCost.value= sum; }

</script>
</head>


<body><div align="center">
<form id="1">
<input type="text" id="customerName" name="customerName" placeholder="Please enter your name here." size="27px"><br><br>
<input type="number" id="hP" name="hoursParked" placeholder="Hours parked?" min="1" max="24"><br><br>
<input type="button" id="calculateP" name="calculatePayment" value="Calculate" onclick="multiply()"/>
<input type="reset" id="resetBtn" value="Clear"><br><br>
<input type="number" id="total" name="totalCost" placeholder="Your Total Payment" readonly/><hr>
</form>
</div>
</body>
</html>
//should return 5
alert(getTotalPayment(0.00001));
alert(getTotalPayment(1));

//should return 10
alert(getTotalPayment(1.5));
alert(getTotalPayment(2));

//should return 15
alert(getTotalPayment(3));

//should return 18
alert(getTotalPayment(3.01));
alert(getTotalPayment(4));
alert(getTotalPayment(11.1));
alert(getTotalPayment(24));

千万不要用浮点来表示整数,特别是金钱(当然,在JS中一切都是浮点,但你得到的是点——不是双关语):你的
hoursParked
变量在任何地方都没有初始化。你使用的是
hoursParked
sum=((hours-3)*1.5)+(price*3);此外,您为什么返回
sum
?以及
sum
totalPayment
之间的区别是什么?“停车场停车最多三小时收费5.00美元。”这是每小时5美元还是头三小时总共5美元?