Javascript 加班费总额计算不正确的原因是什么?
这里有一点解释。停车场停车收费5美元,最多停车三小时。车库每超过三小时或不足一小时,每小时额外收费1.50美元。任何24小时内的最高收费为18.00美元。我们假设停车场一次不超过24小时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
<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美元?